GridView EmptyDataTemplate

时间:2012-06-23 08:56:27

标签: asp.net gridview

我有一个使用EmptyDataTemplate的ASP.NET GridView。此模板用于在我的数据源中不存在任何记录的情况下收集数据。我的GridView源代码如下:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="Lecturer" CellPadding="4"
ForeColor="#333333" GridLines="None" style="text-align: center" allowsorting="True">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
    <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" />
    <asp:HyperLinkField HeaderText="URL" SortExpression="url" DataNavigateUrlFields="url" Text="Link"  ItemStyle-Width="100" />  
</Columns>

<EmptyDataTemplate>
    No data found!
</EmptyDataTemplate>

<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" /> 

这里的问题是我希望在单击按钮搜索后显示空数据模板,但是现在每次打开页面时,它都会显示空数据模板,尽管我还没有进行任何搜索。

4 个答案:

答案 0 :(得分:10)

使用:

EmptyDataText="No data found!"

在网格中如下:

<asp:GridView ID="GridView1" EmptyDataText="No data found!" ....>

您的方式不正确。EmptyDataTemplate并非用于此目的。

答案 1 :(得分:1)

删除EmptyDataTemplate,当您搜索没有与搜索匹配的记录时,请设置gridview的EmptyDataText

答案 2 :(得分:1)

听起来您在Page_Load事件中绑定GridView而不是单击“搜索”按钮。将绑定代码移动到单独的方法中,并在单击事件中单击搜索按钮时调用该方法。

答案 3 :(得分:0)

试试这个:

private DataTable GetDataTable(Boolean blnIsReturnNull)
{
        DataTable tblReturnTable = new DataTable();
        tblReturnTable.Columns.Add("name");
        tblReturnTable.Columns.Add("URL");
        if (blnIsReturnNull)
        {
            return tblReturnTable;
        }
        for (int intCounter = 0; intCounter < 10; intCounter++)
        {
            //Build of tblReturnTable
        }
        return tblReturnTable;
}

 protected void cmdEmptyGridView_Click(object sender, EventArgs e)
    {
        GridView1.DataSource = GetDataTable(true);
        GridView1.DataBind();
    }


<asp:Button ID="cmdEmptyGridView" runat="server" Text="Empty GridView" OnClick="cmdEmptyGridView_Click"
                            CssClass="Button" /></td>