DataGrid为数据绑定控件,是重量级控件,臃肿,无华不实这么一个控件定位。如果做为管理系统,那么还是可以使用的。
本文只是为了记录ItemCreated和ItemDataBound两个事件的用法。方便自己以后查询使用。
ItemCreated
ItemCreated为DataDrid创建表格时触发,这时候里面还有没绑定数据,只是初始化表格(可以理解为Datagrid刚初始化完成触发的事件)。在这个事件中可以为DataGrid表头添加控件等。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 protected void MyDataGrid_ItemCreated(object sender, DataGridItemEventArgs e) 2 { 3 if (e.Item.ItemType == ListItemType.Header) 4 { 5 Button btn=new Button(); 6 btn.Text = e.Item.Cells[4].Text; 7 btn.Click += new EventHandler(btn_Click); 8 e.Item.Cells[4].Controls.Clear(); 9 e.Item.Cells[4].Controls.Add(btn); 10 } 11 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 void btn_Click(object sender, EventArgs e) 2 { 3 string denUser = ""; 4 CheckBox ckb; 5 for (int i = 0; i < MyDataGrid.Items.Count; i++) 6 { 7 if (MyDataGrid.Items[i].ItemType== ListItemType.Item||MyDataGrid.Items[i].ItemType== ListItemType.AlternatingItem) 8 { 9 ckb = (CheckBox) MyDataGrid.Items[i].FindControl("ckb_denyLogin"); 10 if (ckb != null && ckb.Checked) 11 { 12 //System.Web.UI.WebControls.TableCell 13 denUser += MyDataGrid.DataKeys[i].ToString() + MyDataGrid.Items[i].Cells[1].Text+ ","; 14 15 } 16 } 17 } 18 denUser = denUser.Trim(','); 19 msglbl.Text = "已被禁止登录的用户:" + denUser; 20 }
ItemDataBound
ItemDataBound为DataDrid绑定为数据触发的事件。在这里可以根据数据相应的处理,例如(1)在数据源中的男女用1,0表示,在本事件中就可以将1,0转换为可读性高的文字“男“,”女“;(2)在数据源中的是否启用 用bool表示,在本事件中就可以转换为复选框。(3)并且可以为Datagrid添加Footer行,进行合计或者平均运算。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 int count = 0; 2 private int pCount = 0; 3 protected void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e) 4 { 5 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 6 { 7 DataRowView rv = (DataRowView)e.Item.DataItem; 8 //把性别列的bool值替换为相应的文字“男”或“女” 9 if ((bool)rv["sex"] == true) 10 e.Item.Cells[2].Text = "男"; 11 else 12 e.Item.Cells[2].Text = "女"; 13 //根据“禁止登录”列的值设置CheckBox的选中状态 14 CheckBox ckb = e.Item.FindControl("ckb_denyLogin") as CheckBox; 15 if (ckb != null) 16 { 17 ckb.Checked = (bool)rv["禁止登陆"]; 18 } 19 pCount += 1; 20 count += Convert.ToInt32(rv["age"]); 21 } 22 else if (e.Item.ItemType == ListItemType.Footer) 23 { 24 e.Item.Cells[0].Text = "平均"; 25 e.Item.BackColor=Color.PowderBlue; 26 string avge = ""; 27 if (pCount!=0) 28 { 29 avge = (Convert.ToInt32(count)/pCount).ToString(); 30 } 31 e.Item.Cells[3].Text = avge; 32 } 33 }
下载地址: