Я, может казаться, не добираюсь также EmptyDataTemplate
или EmptyDataText
из a GridView
работать.
Я выбираю GridView
содержание в de codebehind и присоединении их с использованием 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();
Эта проблема вызвана использованием так называемых CSS-Friendly Control Adapters. Если они включены (а они, похоже, включены по умолчанию), EmptyDataTemplate
и EmptyDataText
работают не так, как ожидалось.
Чтобы отключить адаптеры, перейдите в папку App_Browsers
и в файле CSSFriendlyAdapters.browser
закомментируйте следующий раздел (или раздел, относящийся к используемому вами элементу управления):
<adapter controlType="System.Web.UI.WebControls.GridView"
adapterType="CSSFriendly.GridViewAdapter" />
Большая проблема в том, что стили исчезнут.
Шаблон 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();
Вы делаете что-то другое, чем это?