如何在asp gridview中使用<emptydatatemplate> </emptydatatemplate>

时间:2014-11-12 10:04:38

标签: javascript c# asp.net gridview

我有一个网格如下

<asp:GridView ID="gvFgOrder" runat="server" AutoGenerateColumns="false">
    <EmptyDataTemplate>
       <thead>
            <tr>
                <th>Order ID</th>
                <th>Total Price</th>
            </tr>
            <tr>
               <td colspan="2" style="text-align: center">No records found</td>
            </tr>
       </thead>
    </EmptyDataTemplate>
    <Columns>
        <asp:BoundField HeaderText="Order ID" DataField="OrderID" />
        <asp:BoundField HeaderText="Total Price" DataField="TotalPrice" />
    </Columns>
</asp:GridView>

当数据源不为空时,数据按预期在<table><tbody>中播种

每当数据源为null时,都会呈现空模板。但问题是在<tbody>标记中添加了一个空行

<table>
    <thead>
        <tr>
                 <td>Order ID</td>
                 <td>Total Price</td>
        </tr>
        <tr>
                 <td colspan="2">No records found</td>
        </tr>
   </thead>
   <tbody>
          <tr><td></td><tr>                  
   </tbody>  
</table>

如何从tbody中消除此表行。我已将点击监听器附加到<tbody> <tr> 因此,javascript中需要不必要的护理。

我怎样才能解决这个问题? 这是使用<EmptyDataTemplate>的正确方法吗?

我的目标是在数据源为空时显示如下

enter image description here

3 个答案:

答案 0 :(得分:1)

我建议你在emptydatatemplate中使用div而不是thead和tr标签。

答案 1 :(得分:0)

这是因为您要将其添加到thead中。因此,即使是空的,也会生成常规tbody

只需指定行:

<EmptyDataTemplate>
        <tr>
           <td colspan="2" style="text-align: center">No records found</td>
        </tr>
</EmptyDataTemplate>

您也可以使用EmptyDataText

<GridView ... EmptyDataText="[ No details available... ]" >

答案 2 :(得分:0)

最后我找到了解决方案
添加行

<EmptyDataRowStyle CssClass="hide" />

节省了我的一天。这会导致在数据源为空时隐藏额外的tbody tr。