2017-05-29 54 views
1

如果gridview中的值为空,我有此问题可以更改gridview颜色。我使用templatefield生成gridview。我用这个代码,并改变所有在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> 

我得到这样的输出:

image i got using above code

,但我想输出是这样的:

image that i want to appear

回答

0

看看你的代码的这一部分,你会发现这个问题

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; 

你可以用它申请你的逻辑(无论电池你想颜色)

+0

哦,我明白为什么会发生。但如果gridview列/行中没有值,我想为它着色。我怎么能做到这一点? – NFH

+0

这么多方法,获得单元格值,将其转换为字符串,并检查长度或检查字符串.Empty – Saurabh

+0

@NFH如果确实帮助你比请upvote标记作为答案 – Saurabh

0

据我理解这个问题,你的没有价值,但如果你通过把断点看到它你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

这是测试的解决方案,也将努力的空间。

+0

我把这个代码,如果值也存在于gridview中,它仍然会为该列着色。为什么?我只希望空列是颜色 – NFH

+0

分享您的RowDateBound事件处理程序的代码。 –