加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WinForms DataGridView行为类似于SQL Server Management S

发布时间:2020-12-15 21:28:44 所属栏目:百科 来源:网络整理
导读:我正在使用 Windows窗体项目中的DataGridViews. 我想获得类似于在MS SQL Server Management Studio中以编辑模式添加的内容. 我试着解释一下:我的数据网格中有一些必需的列,我想只有当这些列中的值有效时才会在网格中添加一行. 如果单元格的值无效,我想用消
我正在使用 Windows窗体项目中的DataGridViews.
我想获得类似于在MS SQL Server Management Studio中以编辑模式添加的内容.

我试着解释一下:我的数据网格中有一些必需的列,我想只有当这些列中的值有效时才会在网格中添加一行.
如果单元格的值无效,我想用消息框警告用户并按ESC,应该重置不正确的行.

我尝试使用CellValidating和RowValidating事件,但我对结果不满意.

你能帮助我吗?

UPDATE

我用这种方式实现了RowValidating:

private void myGrid_RowValidating(object sender,DataGridViewCellCancelEventArgs e)
{
    if (string.IsNullOrEmpty(myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].FormattedValue.ToString()))
    {
        e.Cancel = true;
        myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = "Mandatory";
        MessageBox.Show("Error message");
    }
    else
    {
        myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = string.Empty;
    }
}

当必填字段中的值无效时,将显示消息框并且单元格为红点,但按ESC键我获取IndexOutOfRangeException …
只有当我显示消息框时,才会抛出异常,对方法的工作进行评论(但这不是我想要实现的行为……)

解决方法

以下MSDN论坛帖子中解释了此问题:
DataGridView + RowValidating = Index 4 does not have a value?

基本上,它似乎是DataGridView处理验证的方式中的一个错误(或至少非常意外的行为) – MessageBox.Show()导致对不再存在的行进行验证.

我发现您的代码的以下更改修复了该问题:

private void myGrid_RowValidating(object sender,DataGridViewCellCancelEventArgs e) 
{ 
    // Note the check to see if the current row is dirty
    if (string.IsNullOrEmpty(myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].FormattedValue.ToString()) &&  myGrid.IsCurrentRowDirty) 
    { 
        e.Cancel = true; 
        myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = "Mandatory"; 
        MessageBox.Show("Error message"); 
    } 
    else 
    { 
        myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = string.Empty; 
    } 
}

更改是检查正在验证的行是否脏 – 当您按下escape并删除一行时它不再是脏的,这样可以防止错误地尝试编辑它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读