使用SQL查询填充DataGridView时出现新增列问题求助
解决DataGridView绑定数据后新增列的问题
核心原因
默认情况下DataGridView会开启AutoGenerateColumns属性,绑定DataTable时会自动创建新列,覆盖手动设置的列配置;另外如果手动列的DataPropertyName和查询返回的列名不匹配,也会导致无法对应填充数据,进而出现新增列。
解决方案
关闭自动生成列功能
在窗体初始化或者绑定数据前,设置DataGridView的属性:dataGridView1.AutoGenerateColumns = false;匹配列的DataPropertyName
打开DataGridView的列编辑窗口,给每一列设置DataPropertyName,分别对应查询返回的列名:- 第一列:
DataPropertyName = "cd_produto" - 第二列:
DataPropertyName = "ds_produto" - 第三列:
DataPropertyName = "referencia" - 第四列:
DataPropertyName = "ds_marca"
注意大小写必须完全一致,否则无法匹配。
- 第一列:
优化查询代码中的冗余问题
原代码存在不必要的操作,比如command.ExecuteNonQuery()完全多余,还有未使用的_dt变量,优化后的代码如下:public DataTable pesquisar(string produto) { DataTable _DT = new DataTable(); string sqlQuery = "Select cd_produto, ds_produto, referencia, ds_marca FROM produto"; try { using (var conn = conn.Conectar()) using (SqlDataAdapter da = new SqlDataAdapter(sqlQuery, conn)) { da.Fill(_DT); } return _DT; } catch (Exception) { throw; } }注:如果
conn.Conectar()返回已打开的SqlConnection,使用using语句可自动释放连接资源,避免内存泄漏。
最后绑定数据
完成上述配置后,执行数据绑定:
dataGridView1.DataSource = pesquisar("你的参数");
内容的提问来源于stack exchange,提问作者guiga354
相关产品推荐
相关产品推荐

