我有一个使用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" />
这里的问题是我希望在单击按钮搜索后显示空数据模板,但是现在每次打开页面时,它都会显示空数据模板,尽管我还没有进行任何搜索。
答案 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>