条件格式化 ASP.NET DataGrid 列






4.46/5 (36投票s)
2003年4月22日
1分钟阅读

298850
如何在运行时通过处理 ItemDataBound 事件来格式化 ASP.NET DataGrid 列。

与我们之前的文章 如何移除 DataGrid 列 类似,本文将尝试解答另一个关于 DataGrid
控件最常被问到的问题:如何在运行时有条件地格式化 DataGrid 列? 相信与否,这个问题的答案非常直接。 当您在 DataGrid
控件上调用 DataBind,或者说,当网格绑定到其数据源时,ASP.Net 框架会触发 ItemDataBound
事件。 您可以添加一个事件处理程序来控制 DataGrid
控件的渲染。
解决方案的关键是捕获 ItemDataBound
事件。 当页面接收到此事件时,有关数据行的完整信息可在事件处理程序的 DataGridItemEventArgs
参数中获得。 此参数的 Item
属性包含有关将在页面上渲染的表行和单元格的信息。 此参数还包含用于渲染行信息的 DataItem
的信息。 数据项对应于该行数据的 DataRowView
对象。 您可以根据字段名称或数据列的从零开始的索引获取任何给定数据字段的值。
对于本文,我们使用了示例 Northwind
数据库并将其绑定到我们的 DataGrid
列。
private void OnNWDataBound(object sender,
System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView rv = (DataRowView)e.Item.DataItem;
// Get fourth column value.
Int32 nUnitsInStock = Convert.ToInt32(rv.Row.ItemArray[4]);
if (nUnitsInStock < 20)
{
e.Item.Cells[4].BackColor = Color.Red;
}
}
}