Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过代码隐藏设置datatable中的背景色?_C#_Asp.net - Fatal编程技术网

C# 如何通过代码隐藏设置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

我将数据绑定到datatable中,然后将该datatable绑定到datagrid中。我希望datatable的某些行应该用某种颜色高亮显示。我们如何从代码隐藏中做到这一点

可以使用以下代码片段为网格的行着色:

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”