这可能是一个很长的镜头,但我试图将数据从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:未将对象引用设置为对象的实例。
有谁能看到我在这里出错的地方?
答案 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();