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

DataGridView刷新后首行重复显示问题求助(附代码)

DataGridView刷新后重复出现标题行的问题排查与修复

问题现象

初始状态下DataGridView首行是列标题(示例:des_placa|cod_caminhao_integracao|cod_caminhao_carregamento),第二行是数据行;调用UpdateForm函数刷新后,出现两行与列标题内容相同的行 + 原有数据行。

核心排查方向

  1. 数据库数据问题:检查caminhao表中是否存在一行数据,其字段值恰好等于列名(比如des_placa字段值为"des_placa"),这会导致查询时返回该行,刷新后显示为“重复标题行”。
  2. 代码逻辑错误:现有代码存在多处无效操作和错误,可能间接引发数据显示异常。

代码中的错误点

  • 拼写错误:Placa.DataBarregamento.DataBindings.Add中的DataBarregamento是笔误,应为Cod_carregamento,会导致绑定失败或异常。
  • 无效赋值:Placa.Text = "des_placa";等三行代码直接将控件文本设为字段名,完全覆盖了数据绑定的作用,属于无意义操作。
  • 错误的查询执行:用cmd.ExecuteNonQuery()执行SELECT查询,该方法仅适用于增删改操作,查询应使用ExecuteReader或DataAdapter.Fill;且这段查询完全多余,因为已将全表数据加载到DataTable中。
  • SQL注入风险:直接拼接comboBox1.Text到SQL语句中,存在严重安全隐患。

修复后的代码

private void UpdateForm()
{
    try
    {
        using (SqlConnection conexao = new SqlConnection(connectionString))
        {
            string strsql = "Select des_placa,cod_caminhao_integracao,cod_caminhao_carregamento from caminhao";
            SqlDataAdapter da = new SqlDataAdapter(strsql, conexao);
            DataTable ds = new DataTable();
            da.Fill(ds);

            // 绑定DataGridView
            dataGridView1.DataSource = ds;   

            // 绑定ComboBox
            comboBox1.DataSource = ds;
            comboBox1.DisplayMember = "des_placa";
            comboBox1.ValueMember = "des_placa";
            comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
            comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;

            // 修正绑定逻辑,正确关联控件与字段
            Placa.DataBindings.Clear();
            cod_integracao.DataBindings.Clear();
            Cod_carregamento.DataBindings.Clear();
            Placa.DataBindings.Add("Text", ds, "des_placa");
            cod_integracao.DataBindings.Add("Text", ds, "cod_caminhao_integracao");
            Cod_carregamento.DataBindings.Add("Text", ds, "cod_caminhao_carregamento");
        }
    }            
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

额外配置检查

  • 确认DataGridView的AllowUserToAddRows属性设为false(无需用户手动添加行时),避免自动生成空行。
  • 若手动配置DataGridView列,确保列的DataPropertyName与DataTable的字段名完全匹配,避免列绑定错误。

内容的提问来源于stack exchange,提问作者Faustino Da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:15:32