我将数据绑定在数据表中,然后将该数据表绑定到数据网格中.我希望数据表的某些行应该以某种颜色突出显示.我们怎样才能从代码隐藏中做到这一点?
您可以使用以下代码段为网格的行着色:
foreach (DataGridItem item in DataGrid1.Rows) {
item.BackColor = Color.Red;
}
Run Code Online (Sandbox Code Playgroud)
您现在可以在foreach循环中放置一个条件,只为所需的行着色:
counter = 0;
foreach (DataGridItem item in DataGrid1.Rows) {
if (counter % 2 == 0)
item.BackColor = Color.Black;
else
item.BackColor = Color.Red;
++counter;
}
Run Code Online (Sandbox Code Playgroud)
或者,正如RPM1984的回答中所提到的,你也可以将自己附加到OnItemDataBound事件上,这是一个更好的解决方案(取决于具体情况),因为你不必手动遍历所有行:
ASPX:
<asp:DataGrid ID="DataGrid1" OnItemDataBound="ItemDataBound" runat="server">
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
public void ItemDataBound(object sender, DataGridItemEventArgs e) {
e.Item.BackColor = Color.Red;
}
Run Code Online (Sandbox Code Playgroud)
关于发票和收据的着色,您可以使用以下代码片段来实现您想要的,假设您正在调整使用OnItemDataBound事件来更新行的方法BackColor:
代码隐藏:
public void ItemDataBound(object sender, DataGridItemEventArgs e) {
SalesPosition salesItem = e.Item.DataItem as SalesPosition;
if(salesItem == null) return;
if(salesItem.Type == SalesPositionType.Invoice)
e.Item.BackColor = Color.Yellow;
else if(salesItem.Type == SalesPositionType.Receipt)
e.Item.BackColor = Color.Green;
}
Run Code Online (Sandbox Code Playgroud)
您需要挂钩DataGrid的ItemDataBound事件,以便动态设置所需的属性.
在HTML上,将DataGrid 的OnItemDataBound属性设置为服务器端事件.
<asp:DataGrid id="ItemsGrid" runat="server"
...
OnItemDataBound="Item_Bound">
Run Code Online (Sandbox Code Playgroud)
然后连接服务器端事件处理程序:
void Item_Bound(Object sender, DataGridItemEventArgs e)
{
// some code to handle each bound item
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据ListItemType枚举翻转颜色:
if(e.Item.ItemType == ListItemType.Item)
e.Item.BackColor = Color.Red;
else if (e.Item.ItemType == ListItemType.AlternatingItem)
e.Item.BackColor = Color.Blue
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12493 次 |
| 最近记录: |