動的に作成されたドロップダウン リストから値を取得する際に問題が発生しています。すべてのコントロールは Page_Init セクションで作成されます。リスト項目は、その時点でリスト項目の配列からも追加されます。(コントロールには同じ名前が付けられているため、適切な設定のためにビューステートにアクセスできる必要があります。)
値を取得しようとする関数は次のとおりです。
protected void Eng98AssignmentComplete_Click(object sender, EventArgs e)
{
String myID = "0";
Page page = Page;
Control postbackControlInstance = null;
// handle the Button control postbacks
for (int i = 0; i < page.Request.Form.Keys.Count; i++)
{
postbackControlInstance = page.FindControl(page.Request.Form.Keys[i]);
//Response.Write(page.Request.Form.Keys[i].ToString());
if (postbackControlInstance is System.Web.UI.WebControls.Button)
{
myID = Convert.ToString(
postbackControlInstance.ID.Replace("button_", ""));
}
}
String txtholder = "ctl00$ContentPlaceHolder$Eng098Instructors_" + myID;
Response.Write("MYID: " + myID + "<br/>");
DropDownList ddInstructorCheck = (DropDownList)Page.FindControl(txtholder);
Response.Write("Instructor Selected: "
+ ddInstructorCheck.SelectedValue + "<br/>");
}
どのインストラクターが選ばれたかに関係なく、これが私が得た出力です.....
MYID: 1_1
Instructor Selected: 0
ctl00$ContentPlaceHolder$Eng098Instructors_1_1
コントロールの名前は正しいです(ソースを表示して確認)...
アイデア?