Используйте EmptyDataTemplate как ниже. Когда Ваш DataSource не будет иметь никаких записей, Вы будете видеть свою сетку с заголовками, и буквенным текстом или HTML, который является в тегах EmptyDataTemplate.
<asp:GridView ID="gvResults" AutoGenerateColumns="False" HeaderStyle-CssClass="tableheader" runat="server">
<EmptyDataTemplate>
<asp:Label ID="lblEmptySearch" runat="server">No Results Found</asp:Label>
</EmptyDataTemplate>
<Columns>
<asp:BoundField DataField="ItemId" HeaderText="ID" />
<asp:BoundField DataField="Description" HeaderText="Description" />
...
</Columns>
</asp:GridView>
Можно использовать свойство HeaderTemplate, чтобы установить голову программно или использовать ListView вместо этого при использовании.NET 3.5.
Лично, я предпочитаю ListView по GridView и DetailsView, если это возможно, это дает Вам больше контроля Вашим HTML.
После регистрации этого я действительно придумывал путь, который работает. Однако я не чувствую, что это - лучший способ обработать это. Какие-либо предложения на лучшем?
//Check to see if we get rows back, if we do just bind.
if (dtFunding.Rows.Count != 0)
{
grdFunding.DataSource = dtFunding;
grdFunding.DataBind();
}
else
{
//Other wise add a emtpy "New Row" to the datatable and then hide it after binding.
dtFunding.Rows.Add(dtFunding.NewRow());
grdFunding.DataSource = dtFunding;
grdFunding.DataBind();
grdFunding.Rows[0].Visible = false;
}
Я как раз работал над этой проблемой, и ни одно из этих решений не помогло мне. Я не мог использовать свойство EmptyDataTemplate
, потому что я создавал свой GridView
динамически с настраиваемыми полями, которые предоставляют фильтры в заголовках. Я не мог использовать опубликованный пример, потому что я использую ObjectDataSource
s вместо DataSet
или DataTable
. Тем не менее, я нашел этот ответ , опубликованный на другом вопросе StackOverflow, который ссылается на это элегантное решение , которое я смог использовать в моей конкретной ситуации. Он включает в себя переопределение метода CreateChildControls
из GridView
для создания той же строки заголовка, которая была бы создана, если бы были реальные данные. Я подумал, что стоит опубликовать здесь, где это может быть найдено другими людьми в аналогичном исправлении.