我将数据绑定在数据表中,然后将该数据表绑定到数据网格中。我希望数据表的某些行应该以某种颜色突出显示。我们怎样才能从代码隐藏中做到这一点?
答案 0 :(得分:5)
您可以使用以下代码段为网格的行着色:
foreach (DataGridItem item in DataGrid1.Rows) {
item.BackColor = Color.Red;
}
现在,您可以在foreach
循环中放置条件,只为所需的行着色:
counter = 0;
foreach (DataGridItem item in DataGrid1.Rows) {
if (counter % 2 == 0)
item.BackColor = Color.Black;
else
item.BackColor = Color.Red;
++counter;
}
或者,正如RPM1984的回答中所提到的,您也可以将自己附加到OnItemDataBound
事件,这是一个更好的解决方案(取决于具体情况),因为您不必遍历所有行手工:
ASPX:
<asp:DataGrid ID="DataGrid1" OnItemDataBound="ItemDataBound" runat="server">
代码隐藏:
public void ItemDataBound(object sender, DataGridItemEventArgs e) {
e.Item.BackColor = Color.Red;
}
关于发票和收据的着色,您可以使用以下代码段来实现您的目标,假设您正在调整使用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;
}
答案 1 :(得分:5)
您需要挂钩 DataGrid 的ItemDataBound事件,以便动态设置所需的属性。
在HTML上,将DataGrid的 OnItemDataBound 属性设置为服务器端事件。
<asp:DataGrid id="ItemsGrid" runat="server"
...
OnItemDataBound="Item_Bound">
然后连接服务器端事件处理程序:
void Item_Bound(Object sender, DataGridItemEventArgs e)
{
// some code to handle each bound item
}
然后,您可以根据ListItemType枚举
翻转颜色if(e.Item.ItemType == ListItemType.Item)
e.Item.BackColor = Color.Red;
else if (e.Item.ItemType == ListItemType.AlternatingItem)
e.Item.BackColor = Color.Blue
答案 2 :(得分:1)
您必须在标签ASP中添加一个事件OnDatabound:
您需要使用此
标记事件Datarow绑定 <asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
并在代码隐藏中指定事件的操作:
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView drv = (DataRowView)e.Row.DataItem;
if (drv["INVOICES/RECEIPTS "].ToString()) == "INVOICE" )
{
e.Row.Attributes.Remove("Class");
e.Row.Attributes.Add("Class", "GridView_New");
}
}
您可以在代码中指定一个css类,或者只是修改行的颜色..
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView drv = (DataRowView)e.Row.DataItem;
if (drv["INVOICES/RECEIPTS "].ToString()) == "INVOICE" )
}
e.Item.BackColor = Color.Green;
}
}