65.9K
CodeProject 正在变化。 阅读更多。
Home

条件格式化 ASP.NET DataGrid 列

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.46/5 (36投票s)

2003年4月22日

1分钟阅读

viewsIcon

298850

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

Sample Image - GridColumnFormatting.gif

与我们之前的文章 如何移除 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; } } }
© . All rights reserved.