3

私は C# で Windows アプリケーションを開発していDataGridViewます。現在、データソースの値を表示しています。すべての行にテーブルが含まれる列を追加したいのですが、それを動的に行う方法はありますか? テーブル構造は行ごとに異なるためです。

前もって感謝します。

編集:-つまり、セルにテーブルを動的に挿入したいのです。

ここに画像の説明を入力

各行に動的にEntity Details追加しようとしたときに、これを示す列を見ることができます。TableLayoutPanel

4

5 に答える 5

1

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;
于 2013-05-04T06:33:51.667 に答える
0

この記事があります:方法: Windows フォーム DataGridView セルでコントロールをホストする

MSDN

DataGridView コントロールにはいくつかの列の種類が用意されており、ユーザーはさまざまな方法で値を入力および編集できます。ただし、これらの列の種類がデータ入力のニーズに合わない場合は、選択したコントロールをホストするセルを使用して独自の列の種類を作成できます

これを行うには、 DataGridViewColumn および DataGridViewCell から派生するクラスを定義する必要があります。

Control から派生し、IDataGridViewEditingControlインターフェイスを実装するクラスも定義する必要があります。

したがって、最初にテーブルをプロパティまたはメソッドを持つ独立したコントロールとして作成し、そのコントロールを使用して各行に表示することをお勧めします-データバインドを行うときは、各行にTableControlのデータを設定させます.

別のアプローチはこれかもしれません(グリッドで編集していないと仮定します)-ユーザーコントロールのような単一の行を作成できます(すべてのテキストボックスまたはラベルがdatagridrowスタイルのように配置されるユーザーコントロールを作成して、単一の行のように見えるようにします)および次に、 scrollbar を使用してパネルに追加します。

于 2013-04-30T02:44:39.563 に答える
0

Microsoft が標準で提供しているコントロールでは、これが (簡単に) 可能だとは思いません。

予算に余裕がある場合は、Telerik のコントロールをチェックしてみてください。

http://www.telerik.com/products/winforms/gridview.aspx

彼らは、.NET WinForm コントロールの一部として gridview コントロールを持っています。

そうでない場合、アーキテクチャを変更して ASP.NET Web ベースのアプローチでこの問題を解決することはできますか?

それが役立つことを願っています。幸運を。

于 2013-04-30T05:31:41.253 に答える
0

私によると、その中にテーブルを含む列を追加することDataGridViewはできません..あなたの質問に代わる最良の方法は、自分で動的テーブルを作成し、行を繰り返してデータを表示し、その行内にもちろんセルを配置することですその中のテーブル。

于 2013-05-05T19:37:17.443 に答える