如何用多个表更新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);
}
}
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();
}
}