none
WebPart - как найти контрол в FormView через FindControl? RRS feed

  • Вопрос

  • Всем доброго времени суток!!!

    Уже замучался со следующей проблемой. Создал WebPart для WSS 3.0 с применением User Control(по статье из WSS SDK - Wrap User Control). В контроле расположил контролы, а именно FormView. FormView имеет шаблоны - ItemTemplate, EditTemplate, InsertTemplate.

    Далее в Web Part загружаю контрол:

    protected override void CreateChildControls()
            {
                try
                {
                  
                    base.CreateChildControls();

                    cntrl = (TestSPGridControl)Page.LoadControl("~/_controltemplates/TestPart/TestSPGridControl.ascx");
                    DeptorsFormView =(FormView)cntrl.FindControl("DeptorsFormView");
                   
                    DeptorsFormView.DataSourceID = "dsDeptors";
                    DeptorsFormView.PageIndexChanging += new FormViewPageEventHandler(DeptorsFormView_PageIndexChanging);
                    DeptorsFormView.DataBound += new EventHandler(DeptorsFormView_DataBound);
                                   
                   
                    grdSolDeptors = (GridView)FindControl(DeptorsFormView, "grdSolDeptors");

                    this.Controls.Add(cntrl);
                   


            }
                catch (Exception ex)
                {
                    HandleException(ex);
                }

            }
    Извините, не разобрался со вставкой кода здесь :)

    На форме DeptorsFormView расположен GridView (во всех шаблонах). Я хочу в WebPart назначить ему event RowCommand, но не могу до него добраться! Все время идет ошибка что ссылка на объект не задана.

    Пробовал различные методы, среди них через функцию:

    public static Control FindControl(System.Web.UI.Control ctrl, string search)
            {
                Control f = ctrl.FindControl(search);
                if (f != null)
                    return f;
                foreach (Control c in ctrl.Controls)
                {
                    f = FindControl(c, search);
                    if (f != null)
                        return f;
                }
                return null;
            }

    В переборе контролов я дохожу до DeptorsFormView и все дальше на ней показывает, что контролов нет!

    Помогите советом: как найти контрол в этом случае???

    13 января 2010 г. 7:18

Ответы

  • я делаю LoadControl на OnInit, тогда на CreateChildControls я обращаюсь к публичным свойствам контрола без проблем

    • Предложено в качестве ответа I.Vorontsov 19 января 2010 г. 13:06
    • Помечено в качестве ответа I.Vorontsov 20 января 2010 г. 9:12
    14 января 2010 г. 13:43