2012-04-13 19 views
2

誰か助けてもらえますか?通常のGridViewではとてもシンプルなので、これはなぜ難しいのですか?DevExpress GridViewにローを追加する

プログラムで行を追加しようとしています。通常のGridViewでは、gridView.Rowsを呼び出してそこから追加するだけですが、ここでそのオプションを見つけることはできません。

私はそうのように、データテーブルを作成しようとしたし、それにバインド:

 DataTable dt = new DataTable(); 
     dt.Columns.Add("IP", Type.GetType("System.String")); 
     dt.Columns.Add("Port", Type.GetType("System.String")); 
     dt.Columns.Add("Username", Type.GetType("System.String")); 
     dt.Columns.Add("Password", Type.GetType("System.String")); 
     dt.Columns.Add("Working?", Type.GetType("System.Boolean")); 

     for (int i = 0; i < 20; i++) 
     { 
         DataRow dr = dt.NewRow(); 
         dr[0] = "Test"; 
         dr[1] = "Test"; 
         dr[2] = "Test"; 
         dr[3] = "Test"; 
         dr[4] = true; 
         dt.Rows.Add(dr); 
     } 


     gcProxies.DataSource = dt; 

このすべてがしたが、空の行GRIDCONTROLを追加しました。

アイデア?

+1

私はDevEx GridControlをフォームにドラッグし、名前をgcProxiesに変更し、コードをコピーして機能させました。 GridControlとGridViewの両方を作成するコードを表示できますか? –

+0

問題はGridControlで列を指定していて、削除した列を削除したことです。 dataTableの行とバインドされていない行を追加することは可能ですか? – TheGateKeeper

答えて

5

問題は、デザイナーで列を作成した後、コードの背後でコードを上書きしていないことでした。

DataTableをグリッドにバインドするデータに加えて、任意のデータを表示するか、式に基づいてデータを表示するバインドされていない列を含めることもできます。ここで結合していない列を作成するための基本的な例です:あなたのサンプルでHow to: Add an Unbound Column

あなたのデータソースを設定した後、あなたが結合していない列を追加することができます。

gcProxies.DataSource = dt; 

// Create an unbound column. 
DevExpress.XtraGrid.Columns.GridColumn unbColumn = gridView1.Columns.AddField("Total"); 
unbColumn.VisibleIndex = gridView1.Columns.Count; 
unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Decimal; 
// Disable editing. 
unbColumn.OptionsColumn.AllowEdit = false; 
// Specify format settings. 
unbColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; 
unbColumn.DisplayFormat.FormatString = "c"; 
gridView1.CustomUnboundColumnData += gridView1_CustomUnboundColumnData; 

次に、ここで結合していない列に埋めイベントがあります:

void gridView1_CustomUnboundColumnData(object sender, 
       DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) 
    { 
     if (e.Column.FieldName == "Total" && e.IsGetData) 
      e.Value = 100; 
    } 

これらの例では、正確なソリューションをカスタマイズする必要があります。

+0

ありがとう、私はそれを別の方法で修正したが、これは後で便利になるだろう! – TheGateKeeper

4

DataSourceはとても親切に代わりItemSourceに切り替えて減価償却される

gcProxies.PopulateColumns(); 

そして、もう一つを追加することによって、私はあなたと同じような問題に直面していると私はそれを解決してきました。

関連する問題