How to show empty data row in gridview control

て烟熏妆下的殇ゞ 提交于 2020-01-04 05:14:15

问题


Here I am working with gridview here is the gidview binding

conn = new SqlConnection(strconnection);
string squery = "sql query";

da = new SqlDataAdapter(squery, conn);
ds = new DataSet();
da.Fill(ds, "tbl1");

GridView1.DataSource = ds;
GridView1.DataBind();

This the gridview control asp code

<asp:GridView ID="GridView1" runat="server" GridLines="None" 
     HeaderStyle-CssClass="grid_header" 
     RowStyle-CssClass="grid_item" 
     RowStyle-Height="30px"  
     AutoGenerateColumns="false" Width="775px" EmptyDataText="Empty">
   <Columns>
      <asp:BoundField HeaderText="Order Code" DataField="ordercode" 
           HeaderStyle-HorizontalAlign="Left" 
           ItemStyle-HorizontalAlign="Left"  />
      <asp:BoundField HeaderText="Transation Code" DataField="transcode"  
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
      <asp:BoundField HeaderText="Plan Name" DataField="product" 
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
      <asp:BoundField HeaderText="Plan Started" DataField="Start_d" 
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
      <asp:BoundField HeaderText="Plan Ending" DataField="End_d" 
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
      <asp:CheckBoxField HeaderText="Payed" DataField="Payed" 
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
      <asp:BoundField HeaderText="Pay Date" DataField="PayDate" 
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
      <asp:BoundField HeaderText="Payed Amt" DataField="amtpaid" 
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
      <asp:BoundField HeaderText="Pay Amt" DataField="PayAmount" 
           HeaderStyle-HorizontalAlign="Center" 
           ItemStyle-HorizontalAlign="Center" />
   </Columns>
</asp:GridView>

This is result emp like this

 Header1 header2 header3 header4 
     1       asdas   22sdas  asdasda
     2       sasa             asdasas
     3       asdas  
     4                         asdasas

like this result

Here my problem is I want show the NULL places just show the "EMPTY" Message. How can I do that?


回答1:


You can use NullDisplayText="EMPTY" NullDisplayText Attribute

<asp:BoundField DataField="transcode"
        NullDisplayText="EMPTY"
        HeaderText="header2"/>

If what is coming from your DB is not NULL but an empty string, you will need to use template field

<asp:TemplateField HeaderText="header2">
<ItemTemplate>
    <%# Eval("transcode").ToString() == "" ? "EMPTY" : Eval("transcode").ToString() %>
</ItemTemplate>
</asp:TemplateField>



回答2:


Check out BoundField.NullDisplayText

Gets or sets the caption displayed for a field when the field's value is null.


Sometimes a field's value is stored as null in the data source. You can specify a custom caption to display for fields that have a null value by setting the NullDisplayText property.

In your case, you can use it like;

<asp:BoundField NullDisplayText="EMPTY" HeaderText="Order Code" DataField="ordercode" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left"  />

Since you didn't write your sql query, as an alternative, you can use ISNULL functions for your columns.

Replaces NULL with the specified replacement value.

For example;

SELECT ISNULL(Column1, "EMPTY")

Since you asked, How to change null text color? You can use RowDataBound event for this process. For example;

<asp:GridView ID="gridview1" runat="server" OnRowDataBound="RowDataBound">
</asp:GridView>

protected void RowDataBound(Object sender, GridViewRowEventArgs e)
   {
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
       // Use for loop for based all rows.
       if(e.Row.Cells[i].Text == "EMPTY")
                e.Row.Cells[i].BackColor = Color.Red;

    }
}



回答3:


You just need to add :

NullDisplayText="Empty"

Like:

<asp:BoundField HeaderText="Order Code" DataField="ordercode" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" NullDisplayText="Empty" />


来源:https://stackoverflow.com/questions/15218714/how-to-show-empty-data-row-in-gridview-control

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!