Asp.net网格视图和数据库

时间:2017-11-06 16:54:01

标签: c# asp.net gridview

这可能是一个很长的镜头,但我试图将数据从GridView1(产品数据库表)传输到GridView2(订单数据库表),我迷失了。

这是我尝试的内容:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow gr1 = GridView1.SelectedRow;

    gr1.Cells[1].Text = SqlDataSource3.InsertParameters["ProdId"].DefaultValue;
    TextBox tb1 = gr1.FindControl("TextBox1") as TextBox;
    SqlDataSource2.InsertParameters["OrderQty"].DefaultValue = tb1.Text;


}

第3行GridViewRow gr1.....有一个选择按钮。 我创建了一个带有文本框的新列,该列应该传输OrderQty

我有两个SqlDataSources,一个用于Product(SqlDataSource2),另一个用于Order(SqlDataSource3)。我一直收到错误:

  

System.NullReferenceException:未将对象引用设置为对象的实例。

有谁能看到我在这里出错的地方?

2 个答案:

答案 0 :(得分:1)

尝试使用此代码:

GridViewRow gr1 = (sender as Control).NamingContainer as GridViewRow;

答案 1 :(得分:1)

这就是我为了让它发挥作用所做的事情:

GridViewRow gr1 = GridView1.SelectedRow;

    Label lblProdID = gr1.FindControl("Label1") as Label;

    SqlDataSource3.InsertParameters["OrderDate"].DefaultValue = "11/06/2017";
    SqlDataSource3.InsertParameters["CustID"].DefaultValue = TextBox2.Text;
    SqlDataSource3.InsertParameters["OrderID"].DefaultValue = "12346";
    SqlDataSource3.InsertParameters["ProdID"].DefaultValue = lblProdID.Text;
    SqlDataSource3.InsertParameters["OrderQty"].DefaultValue = ((TextBox)gr1.FindControl("TextBox1")).Text;
    SqlDataSource3.Insert();