2

C# (.Net 3.5) アプリケーションがあり、データ バインドされたデータ グリッドビューで NewRow シンボル (* - アスタリック/スター) を強制/表示しようとしています。私のデータ グリッド ビューは汎用リストにバインドされています。

クラス myRecordRow:

class myRecordRow {
    private string _recordName;
    private string _recordLocation;
    public string RecordName { 
        get { return _recordName; }
        set { _recordName = value; } 
    }
    public string RecordLocation { 
        get { return _recordLocation; }
        set { _recordLocation = value; }
    }
    public myRecordRow() {
        _recordName = string.Empty;
        _recordLocation = string.Emtpy;
    }
    public myRecordRow(string name, string location) {
        _recordName = name;
        _recordLocation = location;
    }
}

クラス myRecord:

class myRecord {
    private List<myRecordRow> _recordRows;
    public List<myRecordRow> RecordRows { 
        get { return _recordRows; }
        set { _recordRows = value; }
    }
}

私のWinform form1_Load()イベントには、次のものがあります。

private form1_Load() {
    BindingSource bindingSource1 = new BindingSource();

    myRecord rec = new myRecord();
    myRecordRow newRow = new myRecordRow("name1", "location1");
    myRecordRow newRow2 = new myRecordRow("name2", "location2");
    rec.RecordRows.Add(newRow); rec.RecordRows.Add(newRow2);

    dataGridView1.AutoGenerateColumns = false;
    dataGridView1.AllowDrop = true;
    dataGridView1.AllowUserToAddRows = true;
    int colIndex = dataGridView1.Columns.Add("RecordName", "myRecord Name");
    dataGridView1.Columns[colIndex].DataPropertyName = "RecordName";
    colIndex = dataGridView1.Columns.Add("RecordLocation", "myRecord Location");
    dataGridView1.Columns[colIndex].DataPropertyName = "RecordLocation";

    bindingSource1 = new BindingSource();
    bindingSource1.DataSource = rec.RecordRows;
    dataGridView1.DataSource = bindingSource1;
}

注: 基になるデータソース (一般的なリスト) にデータを適切に追加するドラッグ アンド ドロップ イベントがあります。

フォームが最初に読み込まれると、データ グリッド ビューに 2 つのエントリが表示されますが、NewRow() (アスタリック/スター記号が付いたもの) が表示されません。また、ユーザーが (ドラッグ & ドロップによって) データの追加を開始したら、NewRow も表示する必要があります。

NewRow が表示される主な理由は、セル/列のいずれかに必要なデータを入力することによって、データを追加する別の (代替) メソッドを許可することです。ドラッグ/ドロップで動作するデータバインディングがありますが、ユーザーがセルの編集を開始できるように NewRow を表示できないようです。また、基になるデータ ソースに新しい行を "挿入" するためにボタンを使用したくありません。

任意の支援/ヘルプをいただければ幸いです。私はこのフォーラムに目を通し、NewRow を「隠す」回答を見つけました。ありがとうございました。

  • ローレンツ
4

1 に答える 1

3

わかりました-私の場合の問題は私のBindingSourceでした。AllowNew プロパティが false に設定されていました - true に設定すると、まさに必要なものが得られました。最も難しい質問が、単純な答えになることもあります。

bindingSource1 = new BindingSource();
bindingSource1.AllowNew = true;
于 2012-05-01T18:58:15.673 に答える