В поисках динамического контроля (панель аккордеона) - PullRequest
0 голосов
/ 26 января 2012

Я использую приведенный ниже код для создания динамических панелей в элементе управления аккордеоном. Информация считывается из набора данных, и элементы управления генерируются на основе этой информации. Теперь я застрял, когда дело доходит до поиска этих элементов управления. Когда пользователь нажимает кнопку, мне нужно пройтись по всем элементам управления и получить информацию внутри текстовых полей ... но все, что мне действительно нужно знать, это как называть проклятые вещи!

        Do Until b = 0
            holder = ds.Tables(0).Rows(i).Item("Issue" & z).ToString
            If holder <> "" Then
                lblTitle = New Label()
                txtContent = New TextBox()
                lblTitle.Text = "Issue" & z & " " & ds.Tables(0).Rows(i).Item("Issue" & z)
                txtContent.Text = ds.Tables(0).Rows(i).Item("Issue" & z)
                pn = New AjaxControlToolkit.AccordionPane()
                pn.ID = "Pane" & z
                pn.HeaderContainer.Controls.Add(lblTitle)
                pn.ContentContainer.Controls.Add(txtContent)
                arcPane.Panes.Add(pn)

            End If
            pncount = pncount + 1
            z = z + 1
            b = b - 1
        Loop

1 Ответ

0 голосов
/ 27 января 2012

Каждый элемент управления имеет свойство, называемое Controls, которое представляет собой коллекцию непосредственных дочерних элементов управления. Возможен их просмотр по очереди, где вы можете просматривать их один за другим, пока не найдете тот, который вам нужен. Каждый экземпляр элемента управления также имеет метод FindControl, который можно использовать для поиска элементов управления по их идентификаторам. Вы должны быть в состоянии найти их таким образом. Начните с первого общего родительского элемента управления (например, arcPane).

foreach (Control pane in arcPane.Panes)
{
    foreach (Control c in pane.ContentContainer.Controls)
    {
        //examine c.ClientID or c.GetType() or some other 
                    //property that you can recognize the control by
    }
}
...