我正在寻找一些解决方案如何从tabcontrol中动态创建的tabpage中动态创建datagridview中获取数据。在我做了gridviews之后,我从Excel文件中填充它。我不知道如何在其他方法中调用特定的datagridview,如果我没有在我的项目中永久创建它。C#如何从动态创建的datagridview中获取动态制表tabcontrol中的数据
下面是我的方法代码,我如何在TabControl中动态生成标签页并填充动态创建的datagridviews。任何帮助将非常欣赏:-)
private void FillPages()
{
try
{
for (int i = 0; i <= listView.Items.Count - 1; i++)
{
string path = listView.Items[i].Text.ToString();
Variables.fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path);
Variables.FullPath = listView.Items[i].Text.ToString();
string valueMonth = comboBoxMonth.Text.ToString();
string valueYear = comboBoxYear.Text.ToString();
string excelQuery = "select * from [AAB$]";
try
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ path + ";Extended Properties=\"Excel 12.0;HDR=YES;\";";
OleDbConnection con = new OleDbConnection(connectionString);
OleDbCommand cmdOLEDB = new OleDbCommand(excelQuery, con);
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(cmdOLEDB);
DataTable data = new DataTable();
da.Fill(data);
Variables.fileName = Path.GetFileName(path);
TabPage tab = new TabPage();
tab.Text = Variables.fileNameWithoutExtension;
DataGridView grid = new DataGridView();
grid.Dock = DockStyle.Fill;
grid.AllowUserToAddRows = false;
grid.DataSource = data;
grid.AutoResizeColumns();
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
tab.Controls.Add(grid);
tabControlForDataUploaded.Controls.Add(tab);
labelTabName.Text = tabControlForDataUploaded.TabPages[0].Text.ToString();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
化妆的DataGridView网全球。 –
只是将DataGridView从方法FillPages中声明出来。 –
@sowjanyaattaluri没有很多DataGridViews来获取数据吗?如果是这样,那么一个全局对象引用将不会执行这个技巧。 我只想问一下,使用数据的问题在哪里?你有自己的数据表,绑定到源,然后绑定到datagridview。你是否希望全局访问那些在这个循环之外的数据表,或者你想要一个基本的方法来访问数据库中的数据? –