【问题标题】:asp.net gridview doesn't display dataasp.net gridview 不显示数据
【发布时间】:2014-01-18 05:49:44
【问题描述】:
protected void Button1_Click1(object sender, EventArgs e)
{
    SqlConnectionStringBuilder connb = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["SCS"].ConnectionString);      
    using (SqlConnection conn = new SqlConnection(connb.ConnectionString))
    {
        SqlCommand cmd = new SqlCommand("Select * from dbo.Users;", conn);
        DataTable tb = new DataTable();

        SqlDataAdapter da = new SqlDataAdapter(cmd);

        da.Fill(tb);
        tb.AcceptChanges();
        GridView1.DataSource = tb;
        GridView1.DataBind();
     }
}

这是我在 C# asp.net 应用程序中的代码。我想在 gridview 中显示 SQL 表。

<Columns>
  <asp:BoundField ItemStyle-Width="150px" DataField="name" HeaderText="name" />
  <asp:BoundField ItemStyle-Width="150px" DataField="lastname" HeaderText="lastname" />
  <asp:BoundField ItemStyle-Width="150px" DataField="ID" HeaderText="ID" />
</Columns>

IT 显示空网格视图(当我按下按钮 1 时)。它不显示任何错误消息。连接字符串有效,SQL 命令影响行,但它仍然没有在 gridview 上显示任何数据!!!

谁能帮帮我?

【问题讨论】:

  • 在绑定数据的时候,有没有试过调试检查表中是否真的有数据?
  • 是的,我尝试过,但在 Windows 窗体中。
  • idGridView1是否正确
  • 您是否尝试过调试您的实际网页以确保 button1 正确连接到该方法,并确保 tb 中有行?
  • 看我的回答。我希望它可以帮助你stackoverflow.com/a/20855275/2218635

标签: c# asp.net sql gridview


【解决方案1】:

您可能会在 DataBind() 中遇到异常 - 使用 try-catch 块。这可能是由于在绑定字段中使用的 DataTable 中缺少列。

 protected void Button1_Click1(object sender, EventArgs e)
 {

   SqlConnectionStringBuilder connb = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["SCS"].ConnectionString);
   using (SqlConnection conn = new SqlConnection(connb.ConnectionString))
   {
    try
    {
      SqlCommand cmd = new SqlCommand("Select * from dbo.Users;", conn);
      DataTable tb = new DataTable();

      SqlDataAdapter da = new SqlDataAdapter(cmd);

      da.Fill(tb);
      tb.AcceptChanges();
      GridView1.DataSource = tb;
      GridView1.DataBind();
      GridView1.Rows[0].Cells[0].Text. = "a";
    }
    catch(Exception ex)
    {
         Response.Write(ex.Message);
    }     
   }           
}

【讨论】:

  • gridview1.rows[0].cells[0].text _ 这是额外的(我刚试过。我想看看会发生什么)。我删除了这个,但这里没有问题。问题是datagridview没有显示我的sql server中的任何数据。
  • 我已经删除了,请查看我更新的答案。你会在 catch 中得到异常,在 catch 块中放置一个断点。
  • 您可能需要将 try catch 放在 using 块旁边,我已经更新了答案。
  • 我尝试在 using 块中使用 try catch,但它不起作用。 Gridview 不显示任何数据。
  • 填充方法后能看到数据表中的数据吗?
【解决方案2】:
  • 如果要绑定指定列,请设置AutoGenerateColumns="false"。请勾选

  • 还需要检查您是否在 gridview 中设置了visible="false"style="display:none"

  • 并检查DataField必须匹配表column名称

【讨论】:

    【解决方案3】:
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    
    da.Fill(ds);
    
    GridView1.DataSource = ds.Tables[0];
    GridView1.DataBind();
    

    【讨论】:

      【解决方案4】:
             SqlCommand cmd = new SqlCommand("Select * from dbo.Users;", conn);
             SqlDataAdapter da = new SqlDataAdapter(cmd);      
             ds = new DataSet();
             da.Fill(ds, "usersdata");
             GridView1.DataSource = ds.Tables["usersdata"];
             GridView1.DataBind();
      

      【讨论】:

        【解决方案5】:

        我在数据源中获取数据时遇到问题,而 GridView 根本没有显示。我在页面上的 Gridview 定义中有 AutoGenerateColumns = "true"。由于某种原因,当我设置断点并查看后面代码中的Gridview的属性时,它仍然设置为false。在将 Gridview 设置为等于数据源并进行数据绑定之前,我在后面的代码中将其设置为 true。那行得通。

        【讨论】:

          【解决方案6】:

          好像你的查询永远不会被执行

          cmd.ExecuteNonQuery () 
          

          这应该发生在这一行之前

          SqlDataAdapter da = new SqlDataAdapter(cmd); 
          

          【讨论】:

            猜你喜欢
            • 2020-04-02
            • 2012-06-18
            • 2023-03-22
            • 1970-01-01
            • 1970-01-01
            • 2013-04-30
            • 2012-07-24
            • 2016-10-16
            • 2014-02-21
            相关资源
            最近更新 更多