如何用多个表更新GridView

本文关键字:更新 GridView 何用多 | 更新日期: 2023-09-27 17:53:49

我有一个DevExpress GridView与EditingMode = EditFormInplace.我尝试用多个表更新GridView并得到错误

不支持对多个基表动态生成SQL

我认为有必要将UpdateCommand添加到dataAdapter中。但是我不明白如何获得Update查询(从编辑行)的参数值。

用多个(连接)表更新DataSource的正确方法是什么?

代码:

public Form2()
{
InitializeComponent();
dataAdapter = new SqlDataAdapter("select t.Id, t.DT, t.Name, t.Age, l.SecondName from TestTime t left join TestTimeLinked l on l.Id = t.Id", Properties.Settings.Default.MARKETConnectionString);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
dataAdapter.Fill(table);
bindingSource1.DataSource = table;
gridControl1.DataSource = bindingSource1;
}
private void gridView1_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
 {
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.MARKETConnectionString))
 {
 conn.Open();
 dataAdapter.Update((DataTable)bindingSource1.DataSource);
 }
 } 

如何用多个表更新GridView

DataRow r = gridView1.GetDataRow(e.RowHandle);获取编辑行值

和完整的方法代码:

 private void gridView1_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
    {
        DataRow r = gridView1.GetDataRow(e.RowHandle);
        using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.MARKETConnectionString))
        {
            conn.Open();
            dataAdapter.UpdateCommand = conn.CreateCommand();
            dataAdapter.UpdateCommand.CommandText = "UPDATE TestTimeLinked set SecondName = @Name where Id = @Id";
            dataAdapter.UpdateCommand.Parameters.AddWithValue("Name", r.Field<string>("SecondName"));
            dataAdapter.UpdateCommand.Parameters.AddWithValue("Id", r.Field<int>("ID"));
            dataAdapter.UpdateCommand.ExecuteNonQuery();
        }
    }