如何通过代码隐藏在数据表中设置背景颜色?

时间:2010-07-22 05:51:13

标签: c# asp.net

我将数据绑定在数据表中,然后将该数据表绑定到数据网格中。我希望数据表的某些行应该以某种颜色突出显示。我们怎样才能从代码隐藏中做到这一点?

3 个答案:

答案 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;
                 }

         }