2013-08-16 67 views
0

我使用多個表格的結果來填充gridview。我的問題是如何編寫存儲過程來一次更新多個表。我正在捕獲變量中的值,如下所示,所以現在我只需要將它們傳遞給sp來更新數據庫和gridview?更新多個表格的DataGrid

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

+0

你在用什麼? SQL Server,MySQL,Oracle ...? – Icarus

+0

我正在使用Sql Server – CSharper

+0

什麼是表名,數據庫名稱,特別是你想要更新的列?表中主列的名稱是什麼? – Icarus

回答

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 
0

創建存儲過程並傳遞所有的值作爲參數。然後在存儲過程中編寫兩條更新語句來更新兩個不同的表。