Доступ к вложенному 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();
                }
            }
        }
Другие вопросы по тегам