Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 联接表上的TableAdapter UpdateCommand_C#_.net_Datagridview_Tableadapter_Updatecommand - Fatal编程技术网

C# 联接表上的TableAdapter UpdateCommand

C# 联接表上的TableAdapter UpdateCommand,c#,.net,datagridview,tableadapter,updatecommand,C#,.net,Datagridview,Tableadapter,Updatecommand,假设我有一个DataGridView,它是从TableAdapter加载的,TableAdapter的内容来自2个联接的表,因此表C是: 选择A.*,B.name左连接B.id=A.B\u id上的B 我知道,向导没有为此生成UpdateCommand。但是,如果表的数据几乎完全来自表A,而表B的加入只是为了提供表A中id引用的数据的名称,那么如果用户更改了DataGridView中的值,我是否可以提供自己的UpdateCommand来更新表A 也就是说,我想将表C的UpdateCommand

假设我有一个DataGridView,它是从TableAdapter加载的,TableAdapter的内容来自2个联接的表,因此表C是:

选择A.*,B.name左连接B.id=A.B\u id上的B
我知道,向导没有为此生成UpdateCommand。但是,如果表的数据几乎完全来自表A,而表B的加入只是为了提供表A中id引用的数据的名称,那么如果用户更改了DataGridView中的值,我是否可以提供自己的UpdateCommand来更新表A

也就是说,我想将表C的UpdateCommand设置为:

更新集合值=[[new value]],其中id=[[current item]]

如果情况变得更糟,我可以创建一个对话框,让用户在其中输入他们的新值,并以这种方式进行操作。就像上面那样做会简单得多。这种方法行得通吗?

您可以在
数据适配器
的范围内做您想要做的事情。你可以找到

在看不到代码的情况下,适配器的设置可能如下所示:

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"
    });