2010-06-03 43 views
4

我似乎无法使GridViewEmptyDataTemplateEmptyDataText工作。EmptyDataTemplate和EmptyDataText在GridView中不工作

我在代码隐藏内容中提取GridView内容,并使用DataBind()附加它们。我试过把它们作为null和一个空的List,并且在这两种情况下我都没有显示我放入EmptyDataTemplateEmptyDataText的文本。

我在做什么错?

编辑(代码段)

这是我的GridView:

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

而且我已经试过这两个绑定数据:

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

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

回答

5

此问题是由于使用所谓的CSS-Friendly Control Adapters引起的。启用它们(并且它们似乎默认启用),EmptyDataTemplateEmptyDataText不能按预期工作。

要禁用适配器,转到App_Browsers文件夹,在文件CSSFriendlyAdapters.browser,注释掉以下部分(或部分相关的控制你使用):

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

的大问题风格将会消失。

+0

您好Farinha,我添加了相关的问题http://stackoverflow.com/questions/3856890/gridview-using-css-friendly-control-adapters-removes-emptydatatemplate-and-empt-希望有一个替代解决方案,将允许保持样式 – kristof 2010-10-04 15:57:55

+0

谢谢,至少说明了一些事情。 – Farinha 2010-10-05 12:07:44

+0

谢谢你,虽然你没有直接帮助我,但你为我节省了很多时间,给我提供了解决问题的线索。再次感谢! – Saxophonist 2015-03-10 18:22:36

2

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

你在做什么不同于这个吗?

+0

这就是我所(编辑使用代码片断的问题)。而不是GridView我只是空白。没有EmptyDataText的标志。 – Farinha 2010-06-03 14:31:17

+0

@Farinha当你用一些内容绑定列表时,GridView呈现?我想知道如果你的数据绑定代码甚至没有运行... – bdukes 2010-06-04 19:04:26

+0

是的,它呈现确定,当它有数据。 – Farinha 2010-06-08 09:29:12

4

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

0

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

1

可以在用户空数据模板.....

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