asp.net 如何在gridview控件中显示空数据行

rt4zxlrg  于 2023-01-14  发布在  .NET
关注(0)|答案(3)|浏览(262)

这里我使用gidview这里是gidview绑定

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();

这是gridview控件的asp代码

<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>

这是这样的结果emp

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

我喜欢这个结果
这里我的问题是我想显示空的地方,只是显示“空”的消息,我该怎么做呢?

6xfqseft

6xfqseft1#

您可以使用NullDisplayText="EMPTY"NullDisplayText Attribute

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

如果来自数据库的不是NULL而是空字符串,则需要使用模板字段

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

klr1opcd2#

checkout BoundField.NullDisplayText
获取或设置当字段值为null时为字段显示的标题。
有时,字段的值在数据源中存储为null。通过设置NullDisplayText属性,可以为具有null值的字段指定要显示的自定义标题。
在您的情况下,可以像这样使用它;

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

由于您没有编写sql查询,因此作为一种替代方法,您可以对列使用ISNULL函数。
用指定的替换值替换NULL。
例如:

SELECT ISNULL(Column1, "EMPTY")

既然你问了,* 如何改变空文本的颜色?* 你可以使用RowDataBound事件来完成这个过程。

<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;         
    }
}
8yparm6h

8yparm6h3#

您只需添加:

NullDisplayText="Empty"

例如:

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

相关问题