[英]change gridview background color if the value is empty
i have this problem to change gridview color if the value in gridview is empty. 如果gridview中的值为空,我有这个问题来更改gridview颜色。 i generate gridview using templatefield.
我使用templatefield生成gridview。 i used this code and it change all in gridview except for the header :
我使用了这段代码,除了标题之外,它在gridview中全部更改:
protected void GridView1_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 = System.Drawing.Color.White;
else
e.Row.BackColor = System.Drawing.Color.Red;
}
}
and this is my back code which i assign gridview : 这是我的后台代码,我指定gridview:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_RowDataBound" >
<Columns>
<asp:TemplateField HeaderText="Request Date">
<ItemTemplate><%#Eval("request_date")%></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A01">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A01" ? "Job Order:"
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\n\nNeed by Date:"
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A02">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A02" ?"Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A03">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A03" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A04">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A04" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A05">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A05" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A06">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A06" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A07">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A07" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A08">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A08" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A09">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A09" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A10">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A10" ?"Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A11">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A11" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A12">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A12" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A13">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A13" ?"Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A14">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A14" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A15">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A15" ?"Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A16">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A16" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A17">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A17" ?"Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "
+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="A18">
<ItemTemplate>
<%#Eval("prod_line").ToString() == "A18" ? "Job Order: "
+Eval("jo_no") +"\n\n\n\n\nQuantity: "
+Eval("qty")+"\n\n\n\nNeed by Date: "
+Eval("need_by_date")+"\n\n\n\n\nStatus: "+Eval("process_id") : "" %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
and i got the output like this : 我得到了这样的输出:
but i want the output be like this : 但我希望输出如下:
Look at this section of your code , you will find the problem 看看代码的这一部分,你会发现问题所在
if (e.Row.Cells[0].Text != "")
e.Row.BackColor = System.Drawing.Color.White;
else
e.Row.BackColor = System.Drawing.Color.Red;
You are setting background color of whole row [e.Row.BackColor] if cell is empty 如果单元格为空,则设置整行的背景颜色[e.Row.BackColor]
Set the color of cell in row 在行中设置单元格的颜色
Like this 像这样
e.Row.Cells[0].BackColor = System.Drawing.Color.Red;
You can apply your logic with it (whichever cell you wanna color) 你可以用它来应用你的逻辑(无论你想要哪个单元格)
As far as I understand the issue, your cell has no value but if you see it within your RowDataBound
event handler by putting the breakpoint, you would probably see value like this
据我所知,你的单元格没有任何价值,但是如果你通过放置断点在
RowDataBound
事件处理程序中看到它,你可能会看到这样的值
instead of empty string. 而不是空字符串。
You just need to slightly modify your condition within RowDataBound
like this: 您只需稍微修改
RowDataBound
的条件,如下所示:
if (string.IsNullOrEmpty(Server.HtmlDecode(e.Row.Cells[1].Text).Trim()))
e.Row.BackColor = System.Drawing.Color.Red;
The value within your cell is htmlEncoded
. 单元格中的值是
htmlEncoded
。 You need to decode it using Server.HtmlDecode
, after this your value will be " "
string with a space that's why I used Trim()
and finally checked whether that value is null or empty
您需要使用
Server.HtmlDecode
对其进行解码,之后您的值将为" "
字符串,其中包含一个空格,这就是我使用Trim()
的原因,最后检查该值是null or empty
This is tested solution and It will work. 这是经过测试的解决方案,它将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.