首页 文章

C#DataGridView单元格在选中时自动清除

提问于
浏览
0

我有一个Windows窗体应用程序与DataGridView(DGV)的一部分 . 我使用Visual Studio UI将列添加到DGV,然后以编程方式添加具有一些默认值的行 . 我的问题是,一旦添加了行,任何选中的单元格都会自动清空其中的任何值 - 甚至是只读单元格!

我只处理DGV的“CellValueChanged”事件,所有这一切都是验证行,以确保存在至少一个有效的值组合,然后启用一个按钮 .

为了增加混淆,选择的单元格清除问题并不总是会发生 . 添加行后,在进行更改或执行使用行重新加载DGV的操作之前,所有单元格都将清除 . 在那之后,一些细胞或者没有一个细胞会自行清除 .

有没有人经历过这个或知道解决问题的方法?我从谷歌得到的只是“如何使细胞清晰”等等 .

谢谢,

  • 马特

*** UPDATE ***

用于向DGV添加新行的代码:

metaMapGrd.Rows.Clear();
        ((DataGridViewComboBoxColumn)metaMapGrd.Columns[1]).DataSource = _excel.ListHeaders(worksheetListCmb.SelectedItem.ToString());
        foreach (Field f in _sharePoint.CurrentFieldList)
        {
            // skip the key field matching portion.  These should be for comparison only.
            if (f.Title == spListKeyCmb.SelectedItem.ToString())
            {
                continue;
            }

            DataGridViewRow row = new DataGridViewRow();

            metaMapGrd.Rows.Add(row);

            DataGridViewTextBoxCell spcell = new DataGridViewTextBoxCell();
            spcell.Value = f.Title;
            spcell.ToolTipText = f.TypeAsString;
            row.Cells["spListColumn"] = spcell;

            DataGridViewCheckBoxCell fcell = new DataGridViewCheckBoxCell();
            fcell.Value = true;
            row.Cells["useThisColumn"] = fcell;
        }
        metaMapGrd.CurrentCell = null;

1 回答

  • 0

    根据我们的聊天,我建议不要尝试手动处理DatagridView,而是使用基础的DataObjects列表,然后将DGV数据绑定到该列表 .

    使用隐藏列获取有关SharePoint ColumnType的信息 .

    Hoipe这有帮助 .

相关问题