C# 如何通过代码隐藏设置datatable中的背景色?
我将数据绑定到datatable中,然后将该datatable绑定到datagrid中。我希望datatable的某些行应该用某种颜色高亮显示。我们如何从代码隐藏中做到这一点 可以使用以下代码片段为网格的行着色:C# 如何通过代码隐藏设置datatable中的背景色?,c#,asp.net,C#,Asp.net,我将数据绑定到datatable中,然后将该datatable绑定到datagrid中。我希望datatable的某些行应该用某种颜色高亮显示。我们如何从代码隐藏中做到这一点 可以使用以下代码片段为网格的行着色: foreach (DataGridItem item in DataGrid1.Rows) { item.BackColor = Color.Red; } <asp:GridView ID="gvAps" BackColor="Yellow" runat="serve
foreach (DataGridItem item in DataGrid1.Rows) {
item.BackColor = Color.Red;
}
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
现在,您可以在foreach
循环中放置一个条件,以便仅为所需的行着色:
counter = 0;
foreach (DataGridItem item in DataGrid1.Rows) {
if (counter % 2 == 0)
item.BackColor = Color.Black;
else
item.BackColor = Color.Red;
++counter;
}
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
或者,如RPM1984的回答中所述,您也可以将自己附加到OnItemDataBound
事件,这是一个更好的解决方案(取决于具体情况),因为您不必手动遍历所有行:
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
ASPX:
<asp:DataGrid ID="DataGrid1" OnItemDataBound="ItemDataBound" runat="server">
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
关于发票和收据的颜色,您可以使用以下代码片段来实现您想要的,假设您正在调整使用OnItemDataBound
事件更新行的背景色的方法:
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
代码隐藏:
public void ItemDataBound(object sender, DataGridItemEventArgs e) {
e.Item.BackColor = Color.Red;
}
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;
}
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
为了动态设置所需的属性,您需要挂接到数据网格的事件中
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
在HTML中,将DataGrid的OnItemDataBound属性设置为服务器端事件
<asp:DataGrid id="ItemsGrid" runat="server"
...
OnItemDataBound="Item_Bound">
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
然后可以根据枚举翻转颜色:
if(e.Item.ItemType == ListItemType.Item)
e.Item.BackColor = Color.Red;
else if (e.Item.ItemType == ListItemType.AlternatingItem)
e.Item.BackColor = Color.Blue
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
您必须在标记ASP中添加事件OnDatabound:
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
您需要使用以下内容标记事件Datarow绑定
<asp:GridView ID="gvAps" BackColor="Yellow" runat="server" HeaderStyle-CssClass="GridView_Entete" OnRowDataBound="RowDataBound" />
您可以在代码中指定css类,也可以简单地修改行的颜色
<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.Item.BackColor = Color.Green;
}
}
var Stack Overflow Wishlist+=支持编辑器中的表。我已经更新了关于发票和收据着色点的答案@RPM1984:)我使用的是数据网格,因此没有行的智能感知如何在数据网格中执行?请尝试上的“OnItemDataBound”