4

ここにコード ビハインド...ドロップダウン リストに項目を追加できるように、このコントロールを取得しようとしています (コード ビハインドのドロップダウン リストに追加するロール グループを取得しています)。

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 サブにあり、コントロールがまだ実際にロードされていないという事実に関係している可能性がありますか?

ありがとう、
マット

4

2 に答える 2

3

ドロップダウンは挿入モードでのみ存在します。formview の ModeChanged イベントを実装して、CurrentMode == の場合はコントロールを取得してみてください

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

フォームがまだ挿入モードに切り替わっていないため、これを Page_Load で処理することはできません。

于 2009-07-18T09:07:47.557 に答える
1

フォームビューの FindControl は、フォームビューの "CurrentMode" プロパティが設定されているテンプレートに対してのみ機能します。

あなたの場合、FormView が "Insert" に設定されている場合、"DDRoleGroups" に対してのみ FindControl を実行できます。これは、コントロールが存在するテンプレートであるためです。

それが役立つことを願っています。

于 2009-06-24T15:47:47.017 に答える