2015-01-02 34 views
1

假設我具有從一個TableAdapter其含量爲2聯接的表加載一個DataGridView,所以表C是:的TableAdapter更新命令上結合表

SELECT A.*, B.name LEFT JOIN B ON B.id = A.b_id 

沒有更新命令是由嚮導此產生的,我知道。但是,如果表的數據幾乎完全來自表A,並且表B僅用於提供表A中由id引用的數據的名稱,那麼如果用戶更改,我可以只提供自己的UpdateCommand來更新表A DataGridView中的值?

也就是說,我想表C的更新命令設置爲:

UPDATE A SET value = [[new value]] WHERE id = [[current item]] 

如果糟糕來糟糕的是,我可以讓用戶輸入自己的新價值爲對話框,這樣做的。看起來像上面這樣做會簡單得多。這種方法會起作用嗎?

回答

1

你可以在DataAdapter的範圍內完成你想要的。你可以找到a good walkthrough on MSDN

沒有看到你的代碼,你的適配器的設置看起來是這樣的:

var dataAdapter = new SqlDataAdapter(
    "SELECT A.*, B.name FROM A LEFT JOIN B ON B.id = A.b_id", sqlConn); 

var dataAdapter.UpdateCommand = new SqlCommand(
    "UPDATE A SET value = @Value WHERE id = @Id", sqlConn); 

// Define the parameters to be used in the update command. 
dataAdapter.UpdateCommand.Parameters.Add(
    "@Value", SqlDbType.NVarChar, 100, "Value_Column_Name"); 

dataAdapter.UpdateCommand.Parameters.Add(
    new SqlParameter("@Id", SqlDbType.Int) 
    { 
     SourceColumn = "Id_Column_Name" 
    });