【问题标题】:EmptyDataTemplate and EmptyDataText not working in GridViewEmptyDataTemplate 和 EmptyDataText 在 GridView 中不起作用
【发布时间】:2011-02-27 08:04:24
【问题描述】:

我似乎无法让EmptyDataTemplateEmptyDataTextGridView 工作。

我正在 de codebehind 中获取 GridView 内容,并使用 DataBind() 附加它们。我尝试将它们设置为null 和空的List,在这两种情况下,我放入EmptyDataTemplateEmptyDataText 的文本都不会显示。

我做错了什么?

编辑(代码 sn-p)

这是我的 GridView:

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

我已经尝试了这两个来绑定数据:

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

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

【问题讨论】:

    标签: asp.net gridview emptydatatext


    【解决方案1】:

    这个问题是由使用所谓的CSS-Friendly Control Adapters引起的。启用它们(并且它们似乎默认启用)后,EmptyDataTemplateEmptyDataText 无法按预期工作。

    要禁用适配器,请转到 App_Browsers 文件夹,然后在 CSSFriendlyAdapters.browser 文件中,注释掉以下部分(或与您正在使用的控件相关的部分):

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

    最大的问题是样式会消失。

    【讨论】:

    • 嗨 Farinha,我添加了相关问题 stackoverflow.com/questions/3856890/… - 希望有一个替代解决方案可以保留样式
    • 谢谢,这至少解释了一些事情。
    • 谢谢你,虽然你没有直接帮助我,但你为我节省了很多时间,让我知道正在解决的问题。再次感谢!
    【解决方案2】:

    我遇到了类似的问题,并注意到如果我的数据源为空,我的 DataBind 周围有逻辑忽略数据绑定方法。

    【讨论】:

      【解决方案3】:

      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();
      

      你在做与此不同的事情吗?

      【讨论】:

      • 这就是我所拥有的(用代码 sn-ps 编辑了问题)。而不是 GridView 我只是空白。没有 EmptyDataText 的迹象。
      • @Farinha 当您将列表与某些内容绑定时,GridView 呈现?我想知道您的数据绑定代码是否甚至没有运行...
      • 是的,里面有数据的时候就可以正常渲染了。
      【解决方案4】:

      用户可以清空数据模板吗.....

          <Columns>
                   ............
                   ............
                   ............
          <Columns>
      <EmptyDataTemplate>
              <asp:Label ID="lblEmptyTxt" runat="server" Text="No Data"></asp:Label>
            </EmptyDataTemplate>
                              </asp:GridView>
      

      【讨论】:

        【解决方案5】:

        不要做我所做的 - GridView ForeColor 属性没有设置,它默认为白色,这也是我的 BackColor 属性!

        【讨论】:

          猜你喜欢
          • 2016-06-14
          • 2011-04-20
          • 1970-01-01
          • 1970-01-01
          • 2016-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-05
          相关资源
          最近更新 更多