2009-06-24 6 views
4

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

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

ответ

1

FindControl на FormView будет работать только для шаблона, что свойство «CurrentMode» в FormView установлен в положение.

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

Надежда, что помогает.

+0

DefaultMode = "Insert" <- Это не то же самое, что CurrentMode = "Insert"? – Matt

+0

Не совсем. DefaultMode - это то, что возвращается formview после любой операции вставки/обновления/удаления. CurrentMode представляет, какой режим FV находится в настоящее время. Я не видел, что вы уже установили свой DefaultMode. Если для параметра «Вставить» установлено значение «Вставить», и вы подтвердили, что он действительно включен в «Вставка во время Page_Load», происходит что-то еще. – womp

+0

Сделал то, что вы предложили, и даже инкапсулировал FindControl в пределах Если ViewForm1.CurrentMode.Equals («Вставить») Затем он определенно попал внутрь If, поэтому я не уверен, почему он не будет работать ... – Matt

3

Выпадающий список существует только в режиме Вставки. Попробуйте осуществить ModeChanged событие в FormView и восстановить контроль, если CurrentMode == Вставка:

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

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