在asp.net应用程序中,我正在使用网格视图控件,因为我将数据绑定到label
中的grid-view
。
如果数据为空,则行的颜色应为红色
如果不是,我的意思是,如果有数据绑定,那么绿色行。
这是我的代码:
<asp:TemplateField HeaderText ="Holiday Region">
<ItemTemplate >
<asp:Label ID ="lblholdareg" runat ="server" Text ='<%# Eval("Holidaregion") %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
答案 0 :(得分:2)
您可以rowdatabound
gridview
函数执行此操作,如下所示
protected void RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
//change it according your cell number or find element
if(e.Row.Cells[0].Text != "")
e.Row.BackColor = Color.Green;
else
e.Row.BackColor = Color.Red;
}
}
答案 1 :(得分:2)
您需要处理RowDataBound事件,进入e.Row项目,并指定CSS类或直接设置背景颜色。我更喜欢设置CSS类,以便您可以在不重新编译的情况下更改它的呈现。
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="Holiday Region">
<ItemTemplate>
<asp:Label ID="lblholdareg" runat="server" Text='<%# Eval("Holidaregion") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
代码隐藏,我不得不假设您使用DataTable作为数据源,更新代码以适合您的数据结构:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
System.Data.DataRow row = (System.Data.DataRow)e.Row.DataItem;
if (row["Holidaregion"] == null || row["Holidaregion"].ToString().Trim().Length == 0)
{
e.Row.CssClass = "row-empty";
}
else
{
e.Row.CssClass = "row-full";
}
}
答案 2 :(得分:0)
尝试这样的事情
<asp:TemplateField HeaderText ="Holiday Region">
<ItemTemplate >
<asp:Label ID ="lblholdareg" runat ="server"
CSSClass='<%# (String.IsNullOrEmply(Eval("Holidaregion")))?"red:green" %>'
Text ='<%# Eval("Holidaregion") %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
修改强>
而不是使用网格视图内联和代码隐藏的东西,只需使用jQuery并在客户端实现相同
答案 3 :(得分:0)
if(e.Row.RowType == DataControlRowType.DataRow)
{
Control l = e.Row.FindControl("Label1");
((Label)l).BackColor = System.Drawing.Color.Red;
}
答案 4 :(得分:0)
尝试这个代码它是颜色变化的每一行与类别明智或过滤明智 http://devloper4u.blogspot.in/2013/10/how-to-set-color-in-every-row-on.html