Таблица заполнена элементами управления внутри ASP.NET FormView, получить элементы управления? - PullRequest
0 голосов
/ 05 февраля 2010

Какой прием, чтобы получить элементы управления внутри FormView. Я получал их с FindControl (), но теперь я не могу получить к ним доступ. Пример: у меня есть несколько ImageButton на FooterTemplate, отлично, я могу получить их плавно, когда дело доходит до элементов управления внутри FormView !!! ноль каждый элемент управления. Как вы думаете, я должен назвать их по-разному в каждом шаблоне? Это заставляет меня думать о столе, вызывающем этот шум!

Я использую событие DataBound и проверяю определенный режим! Есть идеи? Спасибо.

[ОБНОВЛЕНО]

Это работает

            if (this.kataSistimataFormView.CurrentMode == FormViewMode.Edit)
        {
            ImageButton update = (ImageButton)this.kataSistimataFormView.FindControl("btnUpdate");
            update.Visible = true;

Но это почему-то нет

        CheckBox chkBoxPaidoi = kataSistimataFormView.FindControl("chkBoxPaidoi") as CheckBox;

Ответы [ 3 ]

0 голосов
/ 05 февраля 2010

Как кажется, это было вызвано из-за одинаковых идентификаторов именования в различных шаблонах: Вставка, Редактирование, Элемент.Даже это поддерживается компилятором, возникают проблемы, когда вы собираетесь их программным способом позже.

Спасибо всем.

0 голосов
/ 13 июня 2013

Вы когда-нибудь выясняли это? Если вы знаете идентификатор, вы можете использовать эту рекурсивную функцию:

private Control FindControlRecursive(Control root, string id) 
{ 
    if (root.ID == id)
    { 
        return root; 
    } 

    foreach (Control c in root.Controls) 
    { 
        Control t = FindControlRecursive(c, id); 
        if (t != null) 
        { 
            return t; 
        } 
    } 

    return null; 
} 

Найдено здесь: http://www.codinghorror.com/blog/2005/06/recursive-pagefindcontrol.html

0 голосов
/ 05 февраля 2010

FindControl не является рекурсивным. Я имею в виду, что он найдет только те элементы управления, которые находятся внутри дочерних элементов управления, которые вы ищете, - он не будет искать дочерние элементы управления дочерних элементов управления

Если вы поместили элемент управления, который ранее искали, в другой элемент управления, вам придется либо выполнить поиск в этом новом элементе управления, либо, если вы все еще хотите использовать kataSistimataFormView в качестве родительского элемента управления, возможно, придется использовать рекурсивный поиск .

Google для "findcontrol recursive" есть несколько хороших примеров, которые вы можете просто вырезать и вставить.

...