2012-04-30 8 views
2

私はC#(.Net 3.5)アプリケーションを持っていて、データバインドされたデータグリッドビューにNewRowシンボル(* - asterick/star)を強制/表示しようとしています。私のデータグリッドビューは一般的なリストにバインドされています。データバインドされたDataGridViewは新しい行シンボルを表示します

クラス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:私のWinフォームform1_Load()イベントで今

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

、私は次のようしている:

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 - 鉱山が "データを制限したデータグリッドビュー"とは逆の "隠す"答えを見つけました。ありがとうございました。

  • ローレンツ
+0

プロパティ 'dataGrdiView1.RowHeaderVisible'があります。これをtrueに設定しましたか? – Nick

+0

私はそのプロパティをtrueに設定しました。変更はありません。 – Lorentz

+0

[自動実装プロパティ](http://msdn.microsoft.com/en-us/library/bb384054.aspx)を使用していますが、バッキングフィールドもあります。バッキングフィールドを取り除き、プロパティのみを使用します。また、擬似コードよりも実際のコードを投稿した方が便利です(あなたのタイプが不足していて、プロパティ/フィールドの問題のため追加したデータを表示できない可能性があります)。 –

答えて

3

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

bindingSource1 = new BindingSource(); 
bindingSource1.AllowNew = true; 
関連する問題