0

一部にDataGridView(DGV)を備えたWindowsフォームアプリケーションがあります。Visual Studio UIを使用してDGVに列を追加してから、プログラムでいくつかのデフォルト値を使用して行を追加しました。私の問題は、行が追加されると、選択されたセルが、読み取り専用のセルであっても、その中にあった値を自動的に空にすることです。

DGVの「CellValueChanged」イベントのみを処理しています。行を検証して、値の有効な組み合わせが少なくとも1つ存在することを確認してから、ボタンを有効にします。

混乱を増すために、選択されたセルのクリアの問題が常に発生するとは限りません。行が追加された後、変更を加えるか、DGVに行を再ロードするアクションを実行するまで、すべてのセルがクリアされます。その後、一部のセルが自動的にクリアされるか、まったくクリアされません。

誰かがこれを経験したか、問題を解決する方法を知っていますか?グーグルから得たのは「セルを明確にする方法」などだけでした。

ありがとう、

  • マット

* アップデート *

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;
4

1 に答える 1

0

私たちのチャットによると、DatagridViewを手動で処理するのではなく、基になるDataObjectsのリストを使用して、DGVをそのリストにデータバインドすることをお勧めします。

SharePoint ColumnTypeに関する情報については、非表示の列を使用してください。

これが役立ちます。

于 2012-10-19T19:39:29.797 に答える