Доступ к вложенному DataGridview через Parent/ TabControl->TabPage
В настоящее время я создаю приложение Windows Form, в котором я хочу получить данные из базы данных, которые будут синхронизированы с тем количеством целевых баз данных, которые я могу найти в конкретной таблице.
Для этого я сделал TabControl
внутри моего Form 1
с TabPages
создан прагматично для каждой цели дБ. Для каждого TabPage
Я создаю DataGridview для хранения данных и позволяю пользователю выбирать записи, которые он хочет синхронизировать.
foreach (DataRow row in targetDatabases.Rows)
{
//Checking for target databases that aren't Master
if (int.Parse(row["IS_MASTER"].ToString()) == 0)
{
//Creating a new TabPage for every target found in the Table
TabPage newPage = new TabPage(row["CODE"].ToString());
// I'm not sure if this should be
newPage.Parent = tabControl;
// or tabControl.Controls.Add(newPage)
//Creating a new DataGridView for every target found
DataGridView newDgv = new DataGridView();
//Also not sure if this should be
newDgv.Parent = newPage;
//or newPage.Controls.Add(newDgv)
//Setting the DataSource
currDGV.DataSource = Model.getGridViewData(xmlpath, 0);
//Layout settings for the DataGridView
.
.
.
}
}
// Return the TabControl to the View
return tabControl;
Нет проблем до сих пор.
Теперь пользователь может выбрать, какие записи он хочет синхронизировать и с какой целью.
Вот как это выглядит:
Но сейчас я не знаю, как получить доступ к данным в каждом DataGridView
чтобы сохранить выбор пользователя в файл или начать синхронизацию.
Я попробовал что-то вроде этого:
for (int i = 0; i < targetDatabaseCount; i++)
{
tabPages[targetDatabaseCount] = (TabPage)inputTabControl.GetControl(targetDatabaseCount);
foreach (TabPage tabPage in tabPages)
{
DataGridView tempDgv = //don't know how to get the gridview from the TabPage
}
}
Пожалуйста, будьте снисходительны со мной, так как я ученик, и это мой первый пост здесь:)
1 ответ
Вы можете выполнить итерации элементов управления на каждой вкладке, и, если элемент управления представляет собой сетку данных, вы можете привести его и использовать.
Как это:
foreach (TabPage tbp in tbctrl.TabPages)
{
foreach (Control ctrl in tbp.Controls)
{
if (ctrl is DataGridView)
{
DataGridView newDgv = (DataGridView)ctrl;
string strValue = newDgv.Rows[0].Cells[0].Value.ToString();
}
}
}