1

ドロップダウンリストがあります

  <asp:DropDownList ID="DropDownListMySubjectz" runat="server">
                                              </asp:DropDownList>

これを C# の CodeBehind に入力しようとしています。

                                        HtmlGenericControl divMySubjects = (HtmlGenericControl)GridViewUserSubjects.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("divMySubjects");
                    divMySubjects.Style["display"] = "block";
                    DropDownList mySubjects = (DropDownList)GridViewUserSubjects.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("DropDownListMySubjectz");
                    UpdatePanel mySubjectsPanel = (UpdatePanel)GridViewUserSubjects.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("UpdatePanelRequestAction");
                    mySubjects.DataSource = ProfileDataAccess.GetUserSubjects(Membership.GetUser().ProviderUserKey.ToString()).DefaultView;
                    mySubjects.DataTextField = "Subjects";
                    mySubjects.DataValueField = "SubjectId";
                    mySubjects.DataBind();
                    mySubjectsPanel.Update();

すべてがうまくいきます。ポストバックが発生するまで。DRopDownList から項目を取得しようとしています。しかし、DropDownlist は空です。ただし、コードビハインドから入力した後は価値があります。また、意図した同じドロップダウンも取得します。

 DropDownList DDL = (DropDownList)GridViewUserSubjects.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("DropDownListMySubjectz");


  DataSource that populate the gridview

 <asp:ObjectDataSource ID="ObjectDataSourceProfileSubjects" runat="server" SelectMethod="GetUserSubjects"
    TypeName="ProfileDataAccess">
    <SelectParameters>
        <asp:ControlParameter ControlID="HiddenFieldUserId" Name="suserId" PropertyName="Value"
            Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>
4

1 に答える 1

0

ビューステートを使用します。ページとコントロール ViewState を有効にします。で確認する

IIS -> Your WebSite -> Pages & Controls -> Enable Viewstate & Enable Sessionstate を true に設定する必要があります。

また

関数内の DropDownList にデータをロードする場合、OnInit適切にロードする必要があります

于 2012-12-04T15:59:16.590 に答える