2015-01-02 49 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" 
    });