我正在遍历我的数组并使用下面的代码创建行。 Status返回true或false。如果它是假的我想将该特定单元格的背景颜色设置为红色。如何更改单元格的颜色?
<asp:DataGrid ID="DataGrid1" runat="server" AlternatingItemStyle-BackColor="#e4e4e4" AutoGenerateColumns="false" >
<Columns>
<asp:BoundColumn DataField="Name" HeaderText="Name" >
<HeaderStyle BackColor="#4B6C9E" ForeColor="White" />
<ItemStyle Width="240px" Wrap="True" />
</asp:BoundColumn>
<asp:BoundColumn DataField="Status" HeaderText="Coupon Status" >
<HeaderStyle BackColor="#4B6C9E" ForeColor="White" />
<ItemStyle Width="20px" Wrap="True" />
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
代码背后:
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Status");
// Looping through the rows here.
DataSet datareader = db.ExecuteDataSet(command);
DataRow dr = dt.NewRow();
dr["Name"] = datareader.Tables[0].Rows[0]["Name"];
dr["Status"] = datareader.Tables[0].Rows[0]["Status"];
dt.Rows.Add(dr);
DataGrid1.DataSource = dt;
DataBind();
答案 0 :(得分:0)
DataGrid上有一个ItemDataBound事件,或类似的东西。陷入其中,您应该能够检查状态列值并相应地设置单元格颜色。
答案 1 :(得分:0)
使用模板获取自定义设置
<ItemTemplate>
<asp:Panel ID="pnlCol1" runat="server">
<asp:Label ID="LabelName" runat="server"
Text='<%# Eval("Name") %>' OnDataBind="LabelName_DataBind" />
</asp:Panel>
</ItemTemplate>
protected void LabelName_DataBind(object sender, EventArgs e)
{
Label label = (Label)sender;
Panel panel = (Panel)label.NameingContainer;
// Set color here to panel
panel.BackColor = Color.Red;
}
或者您可以使用PreRender事件。这取决于您的需求。
答案 2 :(得分:0)
将onitemdatabound事件添加到网格
<asp:DataGrid ID="DataGrid1" runat="server"
AlternatingItemStyle-BackColor="#e4e4e4" AutoGenerateColumns="false"
onitemdatabound="DataGrid1_ItemDataBound" >
<Columns>
<asp:BoundColumn DataField="Name" HeaderText="Name" >
<HeaderStyle BackColor="#4B6C9E" ForeColor="White" />
<ItemStyle Width="240px" Wrap="True" />
</asp:BoundColumn>
<asp:BoundColumn DataField="Status" HeaderText="Coupon Status" >
<HeaderStyle BackColor="#4B6C9E" ForeColor="White" />
<ItemStyle Width="20px" Wrap="True" />
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
如果状态为false,您可以在代码隐藏中设置状态列的背景颜色。
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var status = Convert.ToBoolean(((DataRowView)e.Item.DataItem).Row.ItemArray[1]);
if (!status)
{
e.Item.Cells[1].BackColor = System.Drawing.Color.Red;
}
}
}