ドロップダウンリストがあります
<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>