DataGrid数据隐藏与显示
1 ItemDataBound事件
private void DG_DataRet_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//初始绑定的时候,如果绑定的是表头,则加载AP多语言包
if (e.Item.ItemType==ListItemType.Header)
{
e.Item.Cells[0].Text=Resource["56002"].ToString();
e.Item.Cells[1].Text=Resource["56003"].ToString();
e.Item.Cells[2].Text=Resource["56004"].ToString();
e.Item.Cells[3].Text=Resource["56005"].ToString();
e.Item.Cells[4].Text=Resource["56006"].ToString();
e.Item.Cells[5].Text=Resource["56007"].ToString();
e.Item.Cells[6].Text=Resource["56008"].ToString();
e.Item.Cells[7].Text=Resource["56009"].ToString();
e.Item.Cells[8].Text=Resource["56010"].ToString();
e.Item.Cells[9].Text=Resource["56011"].ToString();
e.Item.Cells[10].Text=Resource["56012"].ToString();
e.Item.Cells[11].Text=Resource["56013"].ToString();
e.Item.Cells[12].Text=Resource["56014"].ToString();
}
//初始绑定的时候,如果绑定的是数据,则隐藏二级数据
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//得到已绑定的表
DataTable dt=(DataTable)this.DG_DataRet.DataSource;
//得到Region和Country的值
string Region=dt.Rows[e.Item.ItemIndex][0].ToString();
string Country=dt.Rows[e.Item.ItemIndex][1].ToString();
//得到LinkButton的Region按钮
LinkButton LB_Region=( LinkButton )e.Item.FindControl("LB_Region");
LB_Region.CommandArgument=e.Item.ItemIndex.ToString();
//如果用户是AP级别,并且刚绑定的数据Region为空,则把该数据隐藏
if (Role=="AP" && Region=="")
{
e.Item.Style.Add("display","none");
}
//如果用户是Country级别,并且刚绑定的数据Country为空,则把该数据隐藏
if (Role=="Country" && Country=="")
{
e.Item.Style.Add("hidden","true");
}
}
}
2 ItemCommand事件
protected void DG_DataRet_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//先确定点击的是哪一行数据
int CurIndex=e.Item.ItemIndex;
//DataTable dt=(DataTable) this.DG_DataRet.DataSource;
string UserCode=this.CurrentUserCode.ToString();
DataTable dt=Business.WOSDetail.GetWOSData(DateTime.Now.ToString(),UserCode);
int i;
//如果点击的是Region按钮
if (e.CommandName=="LB_Region")
{
//从点击的当前行循环到最后一行,找到下一个Region不为空的数据行
for ( i=CurIndex+1;i<dt.Rows.Count;i++)
{
if ( dt.Rows[i]["Region"].ToString()!="" )
{
break;
}
}
//如果点击行的下一行数据为隐藏,则显示
if (this.DG_DataRet.Items[CurIndex+1].Style["display"].ToString()=="none")
{
//从当前行的下一行循环到下一个Region的上一行
for (int j=CurIndex+1;j<=i-1;j++)
{
//将所有Country不为空的数据显示
if ( dt.Rows[j]["Ctry"].ToString()!="" )
{
this.DG_DataRet.Items[j].Style.Add("display","block");
}
}
}
//如果点击行的下一行数据为显示,则隐藏
else
{
for (int j=CurIndex+1;j<=i-1;j++)
{
this.DG_DataRet.Items[j].Style.Add("display","none");
}
}
}
//如果点击的是Country的LinkButton
if (e.CommandName=="LB_Ctry")
{
//从点击的当前行循环到最后一行,找到下一个Country不为空的数据行
for ( i=CurIndex+1;i<dt.Rows.Count;i++)
{
if ( dt.Rows[i]["Region"].ToString()!="" || dt.Rows[i]["Ctry"].ToString()!="")
{
break;
}
}
//如果点击行的下一行数据为隐藏,则显示
if (this.DG_DataRet.Items[CurIndex+1].Style["display"].ToString()=="none")
{
for (int j=CurIndex+1;j<=i-1;j++)
{
this.DG_DataRet.Items[j].Style.Add("display","block");
}
}
else
{
for (int j=CurIndex+1;j<=i-1;j++)
{
this.DG_DataRet.Items[j].Style.Add("display","none");
}
}
}
}