[英]change gridview background color if the value is empty
如果gridview中的值為空,我有這個問題來更改gridview顏色。 我使用templatefield生成gridview。 我使用了這段代碼,除了標題之外,它在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;
}
}
這是我的后台代碼,我指定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>
我得到了這樣的輸出:
但我希望輸出如下:
看看代碼的這一部分,你會發現問題所在
if (e.Row.Cells[0].Text != "")
e.Row.BackColor = System.Drawing.Color.White;
else
e.Row.BackColor = System.Drawing.Color.Red;
如果單元格為空,則設置整行的背景顏色[e.Row.BackColor]
在行中設置單元格的顏色
像這樣
e.Row.Cells[0].BackColor = System.Drawing.Color.Red;
你可以用它來應用你的邏輯(無論你想要哪個單元格)
據我所知,你的單元格沒有任何價值,但是如果你通過放置斷點在RowDataBound
事件處理程序中看到它,你可能會看到這樣的值
而不是空字符串。
您只需稍微修改RowDataBound
的條件,如下所示:
if (string.IsNullOrEmpty(Server.HtmlDecode(e.Row.Cells[1].Text).Trim()))
e.Row.BackColor = System.Drawing.Color.Red;
單元格中的值是htmlEncoded
。 您需要使用Server.HtmlDecode
對其進行解碼,之后您的值將為" "
字符串,其中包含一個空格,這就是我使用Trim()
的原因,最后檢查該值是null or empty
這是經過測試的解決方案,它將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.