asp.net gridview不显示数据

时间:2013-12-31 09:17:25

标签: c# asp.net sql gridview

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显示空gridview(当我按下button1时)。它不显示任何错误消息。连接字符串工作,SQL命令影响行,但它仍然没有显示gridview上的任何数据!

任何人都可以帮助我吗?

6 个答案:

答案 0 :(得分:1)

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(ds);

GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();

答案 1 :(得分:1)

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

cmd.ExecuteNonQuery () 

这应该发生在这一行之前

SqlDataAdapter da = new SqlDataAdapter(cmd); 

答案 2 :(得分:0)

您可能会在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);
    }     
   }           
}

答案 3 :(得分:0)

  • 如果要绑定指定列,则应设置 AutoGenerateColumns="false" 。请检查

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

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

答案 4 :(得分:0)

我遇到了一个问题,我在数据源中获取数据并且GridView根本没有显示出来。我有AutoGenerateColumns =&#34; true&#34;在页面上的Gridview定义中。出于某种原因,当我设置断点并在后面的代码中查看Gridview的属性时,它仍然设置为false。在将Gridview设置为等于数据源并执行数据绑定之前,我在后面的代码中将其设置为true。这很有用。

答案 5 :(得分:-1)

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