簡體   English   中英

如果值為空,則更改gridview背景顏色

[英]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事件處理程序中看到它,你可能會看到這樣的值&nbsp; 而不是空字符串。

您只需稍微修改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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM