在网格视图中显示动态数据

时间:2016-06-23 11:54:02

标签: c#

我希望通过动态插入数据库中的文本框中的数据,在单击按钮时在网格视图中显示数据

protected void Button1_Click(object sender, EventArgs e)
    {
        //string Name = TextBox1.Text;
        //string Summary = TextBox2.Text;


        //Inserts the FirstName variable into the db-table
        SqlConnection conn = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True");
        conn.Open();
        SqlCommand MyCommand = new SqlCommand("INSERT INTO Table2 (Name,Summary) Values ('" + TextBox1.Text + "' , '" + TextBox2.Text + "');",conn);
        MyCommand.ExecuteNonQuery();
        using (SqlCommand cmd = conn.CreateCommand())
        {
            SqlCommand com = new SqlCommand("Select * from Table2", conn);
            SqlDataAdapter sda = new SqlDataAdapter(com);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            //GridView1.DataSource = ds;
            // GridView1.DataBind();
        }
        conn.Close();
        conn.Dispose();
    }

我在运行此代码时没有收到任何错误,但它没有在网格视图中显示任何数据

3 个答案:

答案 0 :(得分:1)

您必须将数据源作为数据表而不是数据集。

例如:

using (SqlCommand cmd = conn.CreateCommand())
        {
            SqlCommand com = new SqlCommand("Select * from Table2", conn);
            SqlDataAdapter sda = new SqlDataAdapter(com);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }

答案 1 :(得分:0)

除了取消注释这些代码行之外,您还需要将Datasource设置为已填充的数据表而不是DataSet ...

dataGridView1.DataSource = ds.Tables[0];

单独注意,您的初始查询容易受到SQL注入攻击 - 您不应该连接用户输入以形成SQL查询,而是使用参数化查询,例如:

    SqlCommand MyCommand = new SqlCommand("INSERT INTO Table2 (Name,Summary) Values (@tb1, @tb2);", conn);
    MyCommand.Parameters.AddWithValue("@tb1", TextBox1.Text);
    MyCommand.Parameters.AddWithValue(@"tb2", TextBox2.Text);
    MyCommand.ExecuteNonQuery();

您还在使用带有从不使用的SQL命令的using语句

 using (SqlCommand cmd = conn.CreateCommand())

应该是

using (SqlCommand com = new SqlCommand("Select * from Table2", conn))

答案 2 :(得分:-1)

您需要取消注释GridView绑定到数据源的代码,如下所示。

using (SqlCommand cmd = conn.CreateCommand())
        {
            SqlCommand com = new SqlCommand("Select * from Table2", conn);
            SqlDataAdapter sda = new SqlDataAdapter(com);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
        }

Aliter:创建一个DataTable而不是DataSet并使用DataAdapter填充它。

DataTable dt=new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();

尝试一下,如果这对你有用,请告诉我们。

由于