WebForm中DataGrid的ItemDataBound事件

 WebForm中DataGrid的ItemDataBound事件
  当项被数据绑定到 DataGrid 控件后,将引发 ItemDataBound 事件。此事件提供了在客户端显示数据项之前访问该数据项的最后机会。利用DataGridItemDataBound事件,我们可以轻松实现一些实用的功能。
  private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
   
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        //选择DataGrid中模板的链接"HLName"
        HyperLink mhlink=(HyperLink)e.Item.FindControl("HLName");
        DataRowView drv = (DataRowView)e.Item.DataItem;
 
        //设置每一行的序号
        int num = e.Item.ItemIndex + 1;
        e.Item.Cells[0].Text = num.ToString();

        //设置链接行的名字和URL及字段
        mhlink .Text=drv["Name"].ToString ();     
 mhlink.NavigateUrl = "/InfoDetail.aspx?DetailID="+drv["DetailID"].ToString();
 mhlink.Target="_blank";  
 
        //“性别”字段在数据库中是以“0”和“1”存储的,现在以“男”和“女”展现给用户
        int sex = Convert.ToInt32(drv["FSex"]);
        e.Item.Cells[2].Text = (sex == 0 ? "男" : "女");
 
        //将“婚否”字段绑定到 CheckBox
        int married = Convert.ToInt32(drv["FMarried"]);
        CheckBox chk = (CheckBox)e.Item.FindControl("CheckBox1");
        chk.Checked = (married == 0 ? false : true);
    }
}
效果如图:

DataGrid的DataGrid_ItemDataBound事件
  有时候需要统计DataGrid中一列或者多列数值列的和,在DataGrid_ItemDataBound里写一段小代码来实现,和显示在Data
Grid的Footer里面首先定义一个
decimal iTotal
 if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 {
   if(e.Item.Cells[1].Text != null && e.Item.Cells[1].Text != "")
   {  
   iTotal += Convert.ToDecimal(e.Item.Cells[1].Text.ToString());
   }
 }
 if(e.Item.ItemType == ListItemType.Footer)
 {
  e.Item.Cells[0].Text = "合计";
  e.Item.Cells[1].Text = iTotal.ToString(); //显示和
 }
如果有多列需要同时求和,可以用数组来实现首先定义一个decimal数组
decimal[] iTotal = new decimal[5];
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 {
  for(int i=0;i<5;i++)
   { 
    if(e.Item.Cells[i+1].Text != null && e.Item.Cells[i+1].Text != "")
      {
      iTotal += Convert.ToDecimal(e.Item.Cells[i+1].Text.ToString());
      }
   }
 }
 if(e.Item.ItemType == ListItemType.Footer)
 {
   e.Item.Cells[0].Text = "合计";
   for(int i=0;i<5;i++)
    {
     e.Item.Cells[i+1].Text = iTotal.ToString();
     }
  }
这种做法只能统计DataGrid中一页数据某数值列的和,如果想统计全部数据的和,变通一下完全可以实现.
DataGrid的DataGrid_ItemDataBound事件可以实现好多比较实用的功能
比如可以为每条记录删除按钮添加确认提示等.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值