0

我正在用来自多个表的结果填充网格视图。我的问题是如何编写存储过程来一次更新多个表。我正在捕获变量中的值,如下所示,所以现在我只需要将它们传递给 sp 以更新数据库和 gridview 吗?

protected void gvOrderDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
        int key = Convert.ToInt32(gvOrderDetails.DataKeys[e.RowIndex].Value);

        TextBox TrackingID = (TextBox)(gvOrderDetails.Rows[e.RowIndex].FindControl("txtEditTrackingID"));
        TextBox OrderDate = (TextBox)(gvOrderDetails.Rows[e.RowIndex].FindControl("txtEditOrderDate"));
        TextBox CustID = (TextBox)(gvOrderDetails.Rows[e.RowIndex].FindControl("txtEditCustID"));
        TextBox CustomerName = (TextBox)(gvOrderDetails.Rows[e.RowIndex].FindControl("txtEditCustName"));
        TextBox Address = (TextBox)(gvOrderDetails.Rows[e.RowIndex].FindControl("txtEditAddress"));
        TextBox RouteID = (TextBox)(gvOrderDetails.Rows[e.RowIndex].FindControl("txtEditRouteID"));
        // reset to original view
        gvOrderDetails.EditIndex = -1;
        //Databind
        GrabandPostData();
    }

编辑:使用 sql server 2012

4

2 回答 2

0

创建一个存储过程并将所有值作为参数传递。然后在存储过程中编写两个更新语句来更新两个不同的表。

于 2013-08-16T20:46:35.847 回答
0

您的存储过程可以有多个更新/插入语句,因此一旦您捕获了参数,您就可以将它们传递给您的 SP,它将根据您放入其中的逻辑进行操作,例如

CREATE PROCEDURE MyTablesUpdate(@TrackingID int, @OrderDate datetime, @CustID int, @CustomerName varchar(250)) 
AS
BEGIN
     UPDATE ORDERS SET OrderDate = @OrderDate WHERE TrackingID = @TrackingID 

     UPDATE CUSTOMERS SET CustomerName = @CustomerName WHERE CustID = @CustID
END
于 2013-08-16T20:46:47.440 回答