Найти элемент управления после обратной передачи - PullRequest
1 голос
/ 30 января 2012

У меня есть таблица, которая динамически создается при обратной передаче;это список документов со стандартным флажком HTML, который для каждой строки.Цель состоит в том, чтобы иметь возможность выбрать и загрузить несколько документов в один клик.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить доступ к любому флажку, я предполагаю, что они не находятся в состоянии просмотра, потому что они не были созданы в OnLoad.или onInit.

Хорошо, поэтому клиент выбирает категорию своего документа и нажимает кнопку «Получить документы».Затем он попадает в базу данных и создает строки HTML, включая флажки.Затем HTML загружается в литерал, расположенный между тегами.

Обновление

Хорошо, поэтому я не использую и создал строки и ячейки с помощью кода позади,Теперь я могу видеть флажки в Дереве управления через Trace.

ctl00 $ ContentPlaceHolder1 $ 639eec32-f1a8-4fbb-a442-d429571fc3a5 System.Web.UI.WebControls.CheckBox

1015

Вот что я пытался найти флажки:

public static Control FindControlRecursive(Control Root, string Id) { 
    if (Root.ID == Id) return Root; 
    foreach (Control Ctl in Root.Controls) { 
        Control FoundCtl = FindControlRecursive(Ctl, Id); 
        if (FoundCtl != null) return FoundCtl; 
    } 
    return null;
}

Когда запускается функция FindControlRecursive;он видит только 5 элементов управления на странице;Я сделал достаточно, чтобы найти отмеченные флажки, или я все еще не в правильном направлении?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 30 января 2012

Убедитесь, что они создаются, как вы упомянули. Вы можете использовать инструмент разработчика IE (F12) или источник страницы и проверить их идентификаторы. Тогда вы сможете использовать FindControl (). Вам, вероятно, придется привести его к элементу управления CheckBox, чтобы вы могли проверить, отмечен он или нет ...

1 голос
/ 30 января 2012

Это не проблема поиска элементов управления.Вам просто нужно правильно добавлять их при каждом запросе на этапе OnInit.

Не используйте элемент управления Literal для добавления серверных элементов управления ASP.NET.Вместо этого используйте специальные контейнеры, такие как PlaceHolder.

Тогда, если вы знаете Id контроля, вы можете просто использовать FindControl ():

Control myControl1 = FindControl("TextBox2");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...