C# DataGridView不进入编辑模式
我以这种方式填充DataGridView:C# DataGridView不进入编辑模式,c#,winforms,datagridview,edit,C#,Winforms,Datagridview,Edit,我以这种方式填充DataGridView: DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.MARKETConnectionString)) { conn.Open(); String SQL = @"select INN, Idx, Adr, 'P' as Src from AdrP where Idx is
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.MARKETConnectionString))
{
conn.Open();
String SQL = @"select INN, Idx, Adr, 'P' as Src from AdrP where Idx is null
union all
select INN, Idx, Adr, 'K' as Src from AdrK where Idx is null";
SqlCommand cmd = new SqlCommand(SQL, conn);
var RD = cmd.ExecuteReader();
if (RD.HasRows) dt.Load(RD);
dataGridView2.DataSource = dt;
}
但是DataGridView不会通过双击进入编辑模式。如果我删除SQL查询中的“Union All”,则双击可以正常工作,从而在编辑模式下切换DataGridView。但我需要从两个具有Union的表中进行选择
我尝试在DataGridView双击事件中调用dataGridView2.BeginEdittrue。但这没有帮助
使用从两个表中选择的数据源编辑DataGridView的正确方法是什么?在这种情况下,不要使用DataReader。请改用适配器:
using (SqlDataAdapter adp = new SqlDataAdapter(SQL, conn)) {
adp.Fill(dt);
}
谢谢它很好用。但是为什么DataReader在这种情况下不能正常工作?@gouph reader知道union不是一个可编辑的表,所以它在内部将其标记为只读或类似的东西。适配器填充方法没有做出这样的假设。当然,要保存数据,您必须自己提供自定义机制,因为DataTable不知道数据来自何处。