【问题标题】:ASP.NET Web Form is not displaying data in GridViewASP.NET Web 窗体不在 GridView 中显示数据
【发布时间】:2012-07-24 22:58:23
【问题描述】:

我在这里遇到了一些麻烦。

我从我的数据库中获得了一个 DataTable,我想用它作为我的 GridView 的数据源。

问题:当我用我的 DataTable 设置这个 GridView 的数据源时,什么也没有发生。但是如果我设置另一个组件的数据源(如 ListItem),数据就会显示出来。

我该怎么办? 按照下面的代码:

<!-- Here I have a ListView. When I set the datasource, the data is showed. -->
<asp:ListView ID="listviewCustomers" runat="server">
    <ItemTemplate>
        <asp:Label runat="server" ID="myLabel" text="<%# bind('Name') %>" />
    </ItemTemplate>
</asp:ListView>


<!-- Here I have a GridView. When I set the datasource, nothing happens. -->
<asp:GridView runat="server" ID="gridviewPassageiros">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
            <asp:Label runat="server" ID="myLabel" text="<%# bind('Name') %>" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

【问题讨论】:

  • 您必须将代码粘贴到后面或其中的一部分。
  • 您正在设置数据源但您要绑定它吗?
  • 是的,DataSource设置好了,“DataBind”方法被调用了。

标签: asp.net datagrid webforms


【解决方案1】:

最简单的情况可能是缺少对“gridviewPassageiros”的“DataBind”的调用。 另一种选择是添加虚拟内容。

代码隐藏

public void Page_OnLoad(object sender, EventArgs eventArgs)
{
  if (!IsPostback)
  {
    gridviewPassageiros.DataSource = GetPassageiros();
    gridviewPassageiros.DataBind();
  }
}

ASPX:

<asp:GridView runat="server" ID="gridviewPassageiros">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
            <h1>TEST</h1>
            <asp:Label runat="server" ID="myLabel" text="<%# bind('Name') %>" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

评论代码:

DAOPassenger objDAOPassenger = new DAOPassenger(); 
gridviewPassageiros.DataSource = objDAOPassenger.GetAllPassangers(); 
gridviewPassageiros.DataBind(); 

你检查了吗,GetAllPassangers的结果?

【讨论】:

  • 嘿,莫。感谢您的回复。既不是这种方式 - 将

    标记放入模板中 - 数据也不会显示。我已经调用了 DataBind 方法,但什么也没发生。还有什么想法吗?谢谢!

  • 请显示您分配“数据源”属性的代码部分,这可能有助于我们为您提供帮助。
  • 这里是我设置“DataSource”属性的代码: DAOPassenger objDAOPassenger = new DAOPassenger(); gridviewPassageiros.DataSource = objDAOPassenger.GetAllPassangers(); gridviewPassageiros.DataBind();在这里我有显示我的 GridView 的代码: 有什么想法吗?
  • 缩进 4 个字符或使用工具栏中的“按钮”
  • 在 cmets 中它的工作方式有点不同 :) 使用 ` 转义代码或(查看帮助)[stackoverflow.com/editing-help#comment-formatting]
【解决方案2】:

尝试使用

<asp:Label ID="myLabel" runat="server" Text='<%# Eval("Name") %>'></asp:Label>

还要确保正确绑定数据

例如

 if (dt.Rows.Count>0) 
 {
    GridView1.DataSource = dt; 
    GridView1.DataBind(); 
 }  

【讨论】:

  • 感谢您的回复,huMpty duMpty!好吧,数据设置正确,但gridview不显示!太奇怪了吧?
【解决方案3】:

我在您的代码中看到两个问题: 试试这个

Text='<%# Bind("Name") %>'

插入

text="<%# bind('Name') %>"

我在您的代码中也看不到 DataSourceID

希望能帮到你

【讨论】:

  • 感谢您的回复,易卜拉欣!网格视图也不会以这种方式显示。来自“EmptyDataText”属性的消息也没有显示。这么奇怪。有什么想法吗?
【解决方案4】:

缺少DataSourceID .. 没有向您的网格提供数据源。

【讨论】:

  • 如果你使用 DataSourceProvider,你只需要一个 DataSoureID。
  • 感谢您的回复,Amrita。我使用相同的 DataTable 设置 ListView 的 DataSource,并显示数据,但在我的 GridView 中没有任何反应。那是我的大问题!哈哈哈
猜你喜欢
  • 1970-01-01
  • 2014-01-18
  • 2023-03-29
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多