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

GridView行数据传递至其他Web Form时遇空引用异常求助

解决DataGridView行数据传递时的空引用异常

嘿,我看到你遇到了System.NullReferenceException的问题,这在WinForms(从代码风格看更偏向这个场景,如果你实际是Web Form的话后面会补充说明)里传递DataGridView行数据时挺常见的,咱们一步步排查解决:

可能的原因及对应修复方案

1. 先确认点击的是有效数据行

当用户点击DataGridView的表头、空白单元格或者非数据行区域时,CurrentRow会是null,这时候访问它的Cells自然就会抛出空引用异常。

修复方法:先判断CurrentRow是否存在,同时确保点击的是数据行(e.RowIndex >= 0,因为表头的RowIndex是-1):

public void dgvEmployee_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    // 先判断是否点击了有效数据行
    if (e.RowIndex < 0 || dgvEmployee.CurrentRow == null)
    {
        return; // 不是有效行,直接返回
    }

    this.Close();
    Update up = new Update();
    
    // 后续赋值逻辑...
}

2. 处理单元格Value为空的情况

如果某一行的第0或第1列的值是DBNull或者null,直接调用ToString()也会报错。这时候要先做空值判断:

// 安全获取单元格文本,空值时返回空字符串
up.IdBox.Text = dgvEmployee.CurrentRow.Cells[0].Value?.ToString() ?? string.Empty;
up.NameBox.Text = dgvEmployee.CurrentRow.Cells[1].Value?.ToString() ?? string.Empty;

这里用了C#的空传播运算符?.和空合并运算符??,如果Value是null,就不会执行ToString(),而是直接返回空字符串,避免报错。

3. 检查Update窗体的控件是否正确

有时候你可能在Update窗体里把控件的Name写错了(比如写成了idBox而不是IdBox,C#是大小写敏感的),或者控件根本没有添加到窗体上,这时候访问up.IdBox就会是null,赋值时也会抛出异常。

修复方法:

  • 打开Update窗体的设计器,确认控件的Name属性确实是IdBox和NameBox
  • 确保这些控件已经正确拖放到窗体上,没有被意外删除

完整的修复后代码示例

public void dgvEmployee_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    // 验证点击的是有效数据行
    if (e.RowIndex < 0 || dgvEmployee.CurrentRow == null)
    {
        MessageBox.Show("请选择有效的员工行!");
        return;
    }

    Update up = new Update();
    
    // 安全赋值,处理空值情况
    up.IdBox.Text = dgvEmployee.CurrentRow.Cells[0].Value?.ToString() ?? string.Empty;
    up.NameBox.Text = dgvEmployee.CurrentRow.Cells[1].Value?.ToString() ?? string.Empty;
    
    this.Close();
    up.Show(); // 别忘了显示新窗体哦,你之前的代码里好像没写这一步
}

额外提醒:如果实际是Web Form场景,DataGridView的处理逻辑会不一样(Web是无状态的),这时候你需要用Session或者QueryString来传递数据,而不是直接实例化Web Form赋值。不过从你的代码片段来看更偏向WinForms,先按这个场景给你解决啦。

内容的提问来源于stack exchange,提问作者rbshubham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:38:45