.aspxファイルには、通常のhtmlコードと「Panel1」コントロールが含まれています。まず、「ddl」というドロップダウンリストを作成し、それにいくつかのListItemを追加します。これはすべてコードビハインドからのものです。次に、特定の数の他のDropDownListを作成し、「ddl」に追加したすべてのListItemをコピーします。その後、ページの実行時に「Panel1」コントロールに追加する必要があります。最も重要な部分は、動的に作成されたすべてのドロップダウンリストに、ページの実行時に選択された値を持たせたいということです。以下のコードを見ることができます:
protected void Page_Load(object sender, EventArgs e)
{
DropDownList ddl = new DropDownList();
ddl.Items.Add(new ListItem("One", "1"));
ddl.Items.Add(new ListItem("Two", "2"));
ddl.Items.Add(new ListItem("Three", "3"));
ddl.Items.Add(new ListItem("Four", "4"));
ddl.Items.Add(new ListItem("Five", "5"));
ddl.Items.Add(new ListItem("Six", "6"));
ddl.Items.Add(new ListItem("Seven", "7"));
int j = 2;
for (int h = 0; h < 3; h++)
{
DropDownList ddlDynamic = new DropDownList();
//Add the items from ddl to the new dropdownlsit
for (int i = 0; i < ddl.Items.Count; i++)
{
ddlDynamic.Items.Add(ddl.Items[i]);
}
//the selected item in the first dropdownlist
//must be "Two" but it will be "Four". WHY???
ddlDynamic.SelectedValue = j.ToString();
ddlDynamic.ID = h.ToString();
Panel1.Controls.Add(ddlDynamic);
Panel1.Controls.Add(new LiteralControl("<br />"));
j++;
}
}
ここでの問題は、3つのドロップダウンリストすべてで選択された値が同じで、「4」になることです。論理的には、最初の値は「2」、2番目の「3」、3番目の値は「4」である必要があります。最初の質問は:私は何が間違っているのですか?
2番目の質問。ddlDynamic.Items.FindByValue(j.ToString()).Selected = true;
代わりに使用するとddlDynamic.SelectedValue = j.ToString();
、「ドロップダウンリストで複数のアイテムを選択できません」というメッセージが表示されます。何故ですか?
ありがとうございました。