GridView - Покажите заголовки на пустом источнике данных

74
задан Joshua Hudson 2 July 2016 в 16:23
поделиться

4 ответа

Используйте 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>
-3
ответ дан 24 November 2019 в 11:54
поделиться

Можно использовать свойство HeaderTemplate, чтобы установить голову программно или использовать ListView вместо этого при использовании.NET 3.5.

Лично, я предпочитаю ListView по GridView и DetailsView, если это возможно, это дает Вам больше контроля Вашим HTML.

2
ответ дан Liwen 24 November 2019 в 11:54
поделиться

После регистрации этого я действительно придумывал путь, который работает. Однако я не чувствую, что это - лучший способ обработать это. Какие-либо предложения на лучшем?

//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;
}
34
ответ дан Joshua Hudson 24 November 2019 в 11:54
поделиться

Я как раз работал над этой проблемой, и ни одно из этих решений не помогло мне. Я не мог использовать свойство EmptyDataTemplate , потому что я создавал свой GridView динамически с настраиваемыми полями, которые предоставляют фильтры в заголовках. Я не мог использовать опубликованный пример, потому что я использую ObjectDataSource s вместо DataSet или DataTable . Тем не менее, я нашел этот ответ , опубликованный на другом вопросе StackOverflow, который ссылается на это элегантное решение , которое я смог использовать в моей конкретной ситуации. Он включает в себя переопределение метода CreateChildControls из GridView для создания той же строки заголовка, которая была бы создана, если бы были реальные данные. Я подумал, что стоит опубликовать здесь, где это может быть найдено другими людьми в аналогичном исправлении.

5
ответ дан 24 November 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: