使用2个以上动态创建的datagridview

时间:2012-07-17 18:39:57

标签: c#

我正在使用Windows窗体应用程序。我的窗口中有两个tab2。在每个选项卡中,我构建了一个datagridview,我将其命名为dgvRound。我在这两个选项卡中为两个datagridview加载了两组不同的数据。当我从tab1切换到tab2时,我仍然在tab1上看到datagridview数据。如何更改它(货币?)以查看tab2中的dgvRound,我用新数据更新datagridview?

// tabView is my main tab page control
//  Add a new tab for a new round
string title = "Round " + Convert.ToString(intRound);
TabPage myTabPage = new TabPage(title);
tabView.TabPages.Add(myTabPage);

// set up datagridview box
DataGridView dgvRound = new DataGridView();
myTabPage.Controls.Add(dgvRound);
// set up the datagridview column and row headings
SetupTableView(dgvRound);

//load datagridview in a loop with different data from different dataset
string[] row1 = new string[] { "array of datas" };
dgvRound.Rows.Add(row1);

我调用上面的代码根据一些变量多次创建tab和dgv。每个选项卡中每个数据网格中的数据都可以。但是当我尝试从tab2中从datagridview(dgvRound)中提取数据时,我看到tab1中的数据而不是tab2。例如: dgvRound.Rows [0] .Cells [“Game 1”]。值。我怎么告诉它看看tab2.dgvRound.Rows [0] .Cells [“Game 1”]。值?

感谢您的帮助 丹尼尔

感谢HotSoft,我终于找到了在动态创建的标签页中搜索当前datagridview的代码。我添加了这个,它现在正在运行。     TabPage CurrentTabPage = tabView.SelectedTab;     //在这里获取所有控件     Control.ControlCollection col = CurrentTabPage.Controls;     //应该只有一个dgv     foreach(在col中控制myControl)     {        if(myControl.ToString()==“System.Windows.Forms.DataGridView”)        {            DataGridView tempdgv =(DataGridView)myControl;            tempdgv.SelectAll();            dgvRound = tempdgv;        }     } 再次感谢您的帮助...

2 个答案:

答案 0 :(得分:2)

鉴于我无法看到您在每个Tab上动态创建DataGridView的代码

看起来您在两个选项卡上显示相同的DataGrid,而不是在不同的选项卡上重新加载或重新绑定数据网格的不同数据源

OP评论更新:

您可以像这样

从标签页中获取DataGridView
DataGridView dataGridView1 = tabPage1.Controls.OfType<DataGridView>() as DataGridView;
DataGridView dataGridView2 = tabPage2.Controls.OfType<DataGridView>() as DataGridView;

答案 1 :(得分:1)

为什么你不为每个tabPage创建两个不同的DataGridViews? 或者,如果要在两个选项卡上仅使用1 dgv,则清除它(将datasource设置为null)并为下一个选项卡设置新数据源。