3

我有一个使用 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

4 回答 4

11

使用:

EmptyDataText="No data found!"

在网格中,如:

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

你的方法不对。EmptyDataTemplate不用于此目的。

于 2012-06-23T09:09:53.980 回答
1

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

于 2012-06-23T09:26:52.647 回答
1

删除EmptyDataTemplate,当您搜索时,如果没有与搜索匹配的记录EmptyDataText,您的 gridview 集。

于 2012-06-23T09:09:01.507 回答
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>
于 2012-06-23T09:10:12.077 回答