You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SQL查询填充DataGridView时出现新增列问题求助

解决DataGridView绑定数据后新增列的问题

核心原因

默认情况下DataGridView会开启AutoGenerateColumns属性,绑定DataTable时会自动创建新列,覆盖手动设置的列配置;另外如果手动列的DataPropertyName和查询返回的列名不匹配,也会导致无法对应填充数据,进而出现新增列。

解决方案

  1. 关闭自动生成列功能
    在窗体初始化或者绑定数据前,设置DataGridView的属性:

    dataGridView1.AutoGenerateColumns = false;
    
  2. 匹配列的DataPropertyName
    打开DataGridView的列编辑窗口,给每一列设置DataPropertyName,分别对应查询返回的列名:

    • 第一列:DataPropertyName = "cd_produto"
    • 第二列:DataPropertyName = "ds_produto"
    • 第三列:DataPropertyName = "referencia"
    • 第四列:DataPropertyName = "ds_marca"
      注意大小写必须完全一致,否则无法匹配。
  3. 优化查询代码中的冗余问题
    原代码存在不必要的操作,比如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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:15:57