私は C# で Windows アプリケーションを開発していDataGridView
ます。現在、データソースの値を表示しています。すべての行にテーブルが含まれる列を追加したいのですが、それを動的に行う方法はありますか? テーブル構造は行ごとに異なるためです。
前もって感謝します。
編集:-つまり、セルにテーブルを動的に挿入したいのです。
各行に動的にEntity Details
追加しようとしたときに、これを示す列を見ることができます。TableLayoutPanel
私は C# で Windows アプリケーションを開発していDataGridView
ます。現在、データソースの値を表示しています。すべての行にテーブルが含まれる列を追加したいのですが、それを動的に行う方法はありますか? テーブル構造は行ごとに異なるためです。
前もって感謝します。
編集:-つまり、セルにテーブルを動的に挿入したいのです。
各行に動的にEntity Details
追加しようとしたときに、これを示す列を見ることができます。TableLayoutPanel
1)。MSDN の Mark Ridout のTreeGridViewを試して、その使用に関する彼の記事を読んでください。
また、Mark Ridout の TreeGridView を使用する Hierarchical Data Binding を備えたこの CodeProject DataGridView が役立つかどうかも確認してください。
2)。無料のコントロールがうまくいかない場合は、サードパーティを見てください (私はこれらの会社と提携していません):
Devexpress XtraGrid
Telerik Gridview
Infragistics Grid
VIBlend DataGridView for WinForms
Janus Grid
xceed's Grid
3)。TablePanelLayout を Grids セルに追加することは、あなたが望むものではないと確信しています。これがコードであり、自分にとってどれほど危険であるかを確認できます。
DataTable dt = new DataTable();
dt.Columns.Add("name");
for (int j = 0; j < 10; j++)
{
dt.Rows.Add("");
}
this.dataGridView1.DataSource = dt;
this.dataGridView1.Columns[0].Width = 200;
//add tableLayoutPanel1 into the control collection of the DataGridView
this.dataGridView1.Controls.Add(tableLayoutPanel1);
//resize the row
this.dataGridView1.Rows[1].Height = 100;
//set its location and size to fit the cell
tableLayoutPanel1.Location = this.dataGridView1.GetCellDisplayRectangle(0,1, true).Location;
tableLayoutPanel1.Size = this.dataGridView1.GetCellDisplayRectangle(0, 1, true).Size;
この記事があります:方法: Windows フォーム DataGridView セルでコントロールをホストする
MSDNで
DataGridView コントロールにはいくつかの列の種類が用意されており、ユーザーはさまざまな方法で値を入力および編集できます。ただし、これらの列の種類がデータ入力のニーズに合わない場合は、選択したコントロールをホストするセルを使用して独自の列の種類を作成できます。
これを行うには、 DataGridViewColumn および DataGridViewCell から派生するクラスを定義する必要があります。
Control から派生し、IDataGridViewEditingControlインターフェイスを実装するクラスも定義する必要があります。
したがって、最初にテーブルをプロパティまたはメソッドを持つ独立したコントロールとして作成し、そのコントロールを使用して各行に表示することをお勧めします-データバインドを行うときは、各行にTableControlのデータを設定させます.
別のアプローチはこれかもしれません(グリッドで編集していないと仮定します)-ユーザーコントロールのような単一の行を作成できます(すべてのテキストボックスまたはラベルがdatagridrowスタイルのように配置されるユーザーコントロールを作成して、単一の行のように見えるようにします)および次に、 scrollbar を使用してパネルに追加します。
Microsoft が標準で提供しているコントロールでは、これが (簡単に) 可能だとは思いません。
予算に余裕がある場合は、Telerik のコントロールをチェックしてみてください。
http://www.telerik.com/products/winforms/gridview.aspx
彼らは、.NET WinForm コントロールの一部として gridview コントロールを持っています。
そうでない場合、アーキテクチャを変更して ASP.NET Web ベースのアプローチでこの問題を解決することはできますか?
それが役立つことを願っています。幸運を。
私によると、その中にテーブルを含む列を追加することDataGridView
はできません..あなたの質問に代わる最良の方法は、自分で動的テーブルを作成し、行を繰り返してデータを表示し、その行内にもちろんセルを配置することですその中のテーブル。