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");
     
     }
    }
    
   }
  }

转载于:https://www.cnblogs.com/yuanweisen/archive/2009/01/14/1375428.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF(Windows Presentation Foundation)是一种用于创建桌面应用程序的Microsoft开发工具集。DataGrid是WPF中常用的数据表格控件,它允许用户以表格的形式查看和编辑数据。 在WPF DataGrid中,折叠是指将某些行或列隐藏起来,以便节省空间或提供更好的用户体验。实现DataGrid的折叠通常需要借助一些附加的控件或功能。 一种常见的实现方式是使用DataGrid的行模板(RowTemplate)。通过给每一行添加一个按钮或复选框,允许用户点击来折叠或展开该行。当用户点击折叠按钮时,在相应的行上设置Visibility属性为Collapsed(不可见),这样该行就会被隐藏起来。当用户再次点击展开按钮时,将Visibility属性设置为Visible,该行又会重新显示出来。 另一种实现方式是使用DataGrid的分组功能。用户可以通过分组来对数据进行分类,然后可以通过展开或折叠分组来显示隐藏相关的数据。分组可以通过DataGrid的GroupBy属性来定义,然后用户可以通过点击分组标题来展开或折叠该分组。 此外,还可以通过使用自定义样式和转换器来实现DataGrid的折叠效果。通过为具体的行或列定义特定的样式,并使用转换器根据某些条件来确定该行或列是否应该被隐藏。 总之,WPF DataGrid的折叠可以通过行模板、分组功能、自定义样式和转换器等多种方式来实现。根据具体的需求和场景,选择合适的实现方式来实现折叠功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值