2009-06-02 7 views
0

私は単純なCompact Framework winformsアプリケーションを作成しようとしています。メインフォームには、DataTableにバインドされたDataGrid(xmlファイルのデータを含む)があります。私は現在のレコードの詳細を表示する別のフォームを表示したい。詳細フォームのコンストラクタとして、次のコードのようなものがあります。winformsで複数のフォーム間でDataTableを共有

public DetailsForm(DataTable dtLandlords, int Index) //the constructor 
{ 
    InitializeComponent(); 
    lLandlordCode.DataBindings.Add("Text", dtLandlords, "LandlordID"); 
    ....... 
} 

私は次のコードで、私はそれが(インデックスで指定された - 現在使用されていない)現在のレコードを表示するために取得するにはどうすればよい

Form frm = new LandlordDetailsForm(dtLandlords, dataGrid1.CurrentRowIndex); 
    frm.Show(); 

とコンストラクタ呼び出してるだけではなく、最初のレコードを。それとも、私がこれをやるべきであるという良い方法がありますか?

答えて

1

データバインドは、提供された「ビュー」に「バインド」します。現在、デフォルトビューを設定せずにDataTableにバインドしています(デフォルトでは完全なテーブルになります)。例えば。 dtLandlords.DefaultView.RowFilter = "LandlordID = TheIdYouWant";

もう1つの方法は、現在選択されている項目を含むデフォルトビューを提供するDataBingingsにDataGrid/GridView自体を追加することです。

編集:DataGridViewの

にこの例を結合する追加されました例は次のとおりです。 まずテキストボックスとのDataGridView(デフォルト名)でフォームを作成します。次に、このコードをフォームのコンストラクタに配置します。

DataTable dt = new DataTable(); 
dt.Columns.Add("Col1"); 
dt.Columns.Add("Col2"); 
DataRow dr; 
dr = dt.NewRow(); 
dr[0] = "C1R1"; 
dr[1] = "C2R1"; 
dt.Rows.Add(dr); 
dr = dt.NewRow(); 
dr[0] = "C1R2"; 
dr[1] = "C2R2"; 
dt.Rows.Add(dr); 
dr = dt.NewRow(); 
dr[0] = "C1R3"; 
dr[1] = "C2R3"; 
dt.Rows.Add(dr); 

this.dataGridView1.DataSource = dt; 
this.textBox1.DataBindings.Add("Text", dataGridView1.DataSource, "Col1"); 

GridViewで項目を選択して実行すると、自動的に選択した詳細でTextBoxが更新されます。注:ここではDataGridViewを使用しましたが、DataGrids(これはあなたが使用していると思う)でも動作すると仮定します。

+0

最初の提案はありがたくありがとうございます。しかし、私はDataBindingにDataGridを追加することに関する2番目の提案についてもっと知りたいと思います – Alister

+0

主な答えを編集する方法の例を編集しました。これが受け入れられた答えだったら、そのようにマークすることができますか?私は、答えの評価の下にあるティックをクリックすることによって信じる、乾杯。 – Tetraneutron

関連する問題