EmptyDataTemplate и EmptyDataText не работают в GridView - PullRequest
5 голосов
/ 03 июня 2010

Я не могу заставить EmptyDataTemplate или EmptyDataText из GridView работать.

Я извлекаю содержимое GridView в коде и присоединяю их с помощью DataBind(). Я пытался получить их как null и как пустой List, и в обоих случаях текст, который я вставил в EmptyDataTemplate или EmptyDataText, не отображается.

Что я делаю не так?

РЕДАКТИРОВАТЬ (фрагмент кода)

Это мой GridView:

<asp:GridView ID="grid" runat="server" EmptyDataText="EMPTY">
</asp:GridView>

И я попробовал эти два для связывания данных:

grid.DataSource = new List<object>();
grid.DataBind();

grid.DataSource = null;
grid.DataBind();

Ответы [ 5 ]

5 голосов
/ 09 июня 2010

Эта проблема вызвана использованием так называемых CSS-дружественных управляющих адаптеров . Если они включены (и, кажется, они включены по умолчанию), EmptyDataTemplate и EmptyDataText не работают должным образом.

Чтобы отключить адаптеры, перейдите в папку App_Browsers и в файле CSSFriendlyAdapters.browser закомментируйте следующий раздел (или раздел, касающийся используемого элемента управления):

<adapter controlType="System.Web.UI.WebControls.GridView"
               adapterType="CSSFriendly.GridViewAdapter" />

Большая проблема в том, что стили исчезнут.

4 голосов
/ 03 июня 2011

Я столкнулся с подобной проблемой и заметил, что у меня есть логика вокруг моей DataBind, чтобы игнорировать метод привязки данных, если мой источник данных был пуст.

2 голосов
/ 03 июня 2010

EmptyDataTemplate переопределит любой EmptyDataText, поэтому может случиться так, что вы как-то неправильно определили шаблон, что не даст вам увидеть EmptyDataText.

Если вы привязываете пустой список к GridView, он должен отображать EmptyDataText, если у вас нет конфликтующих EmptyDataTemplate, например,

<%-- GridTest.ascx --%>
<asp:GridView ID="Grid" runat="server" EmptyDataText="No Data!" />

// GridTest.ascx.cs
Grid.DataSource = new List<object>();
Grid.DataBind();

Вы делаете что-то другое, чем это?

1 голос
/ 12 декабря 2012

Может ли пользователь очистить шаблон данных .....

    <Columns>
             ............
             ............
             ............
    <Columns>
<EmptyDataTemplate>
        <asp:Label ID="lblEmptyTxt" runat="server" Text="No Data"></asp:Label>
      </EmptyDataTemplate>
                        </asp:GridView>
0 голосов
/ 12 февраля 2012

И не делайте того, что я сделал - свойство GridView ForeColor не было установлено и по умолчанию имеет значение white, которое также было моим свойством BackColor!

...