Проблема с поиском элемента управления в FormView из-за кода - PullRequest
4 голосов
/ 24 июня 2009

Здесь код позади ... Я пытаюсь получить этот элемент управления, чтобы добавить элементы в раскрывающийся список (я получаю группы ролей для добавления в раскрывающийся список в выделенном фрагменте кода)

Protected Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim DDRoleGroups As DropDownList
    DDRoleGroups = FormView1.FindControl("DDRoleGroup")
End Sub

Вот FormView: (я вынул большинство полей, чтобы их было легче читать)

<asp:FormView ID="FormView1" runat="server" DataKeyNames="ID" 
     DataSourceID="ObjectDataSource_Vendors" 
     DefaultMode="Insert" BorderColor="DarkGray" 
     BorderStyle="Solid" BorderWidth="1px" CellPadding="4" Visible="False"> 
  <EditItemTemplate> 
  </EditItemTemplate> 
  <InsertItemTemplate>                          
    <label class="form_label">Role Group:</label><br /><asp:DropDownList ID="DDRoleGroup" 
               runat="server" Width="175px"
               EnableViewState="False"> 
              </asp:DropDownList>
   </InsertItemTemplate>
</asp:FormView>

Может ли это быть связано с тем, что он находится в подпрограмме Page_Load и элемент управления еще не загружен?

Спасибо,
Matt

Ответы [ 2 ]

3 голосов
/ 18 июля 2009

Ваш выпадающий список существует только в режиме вставки. Попробуйте реализовать событие ModeChanged формы просмотра и получить элемент управления, если CurrentMode == Insert:

protected void FormView1_ModeChanged(object sender, EventArgs e)
{
    if (FormView1.CurrentMode == FormViewMode.Insert)
    {
        DropDownList DDRoleGroups = FormView1.FindControl("DDRoleGroup");
        // fill dropdown
    }
}

Вы не можете справиться с этим в Page_Load, так как форма еще не переключилась в режим вставки.

1 голос
/ 24 июня 2009

FindControl в представлении формы будет работать только для шаблона, для которого установлено свойство CurrentMode в FormView.

В вашем случае вы можете выполнять FindControl только для "DDRoleGroups", если для вашего FormView установлено значение "Вставить", поскольку это шаблон, в котором существует ваш элемент управления.

Надеюсь, это поможет.

...