私は既存のプロジェクトのコードを書き直し始め、2 つのプロジェクトの作成方法を変更しましたdropdownlists
。を使用DataBind
すると、ポストバック後にSelectedValue
正しい値が設定されます。Page_Load
ただし、を使用AddRange
するSelectedValue
と、常にドロップダウンリストの最初の値になります。
ドロップダウンリストがどのように満たされるかは、ポストバックの動作にどのように影響しますか? はい、ページには Java スクリプトもありますが、これがどのように干渉するのかわかりません。
動作する方法 (SelectedValue
で正しいPage_Load
):
protected void Page_Init(object sender, EventArgs e)
{
IList<ListItem> list = new List<ListItem>();
list.Add(new ListItem(Resources.Site.OriginalStructure, "0"));
list.Add(new ListItem("5", "5"));
list.Add(new ListItem("10", "10"));
list.Add(new ListItem("15", "15"));
list.Add(new ListItem("20", "20"));
list.Add(new ListItem("25", "25"));
DropDownList1.DataSource = list;
DropDownList1.DataTextField = "Text";
DropDownList1.DataValueField = "Value";
DropDownList1.DataBind();
DropDownList2.DataSource = list;
DropDownList2.DataTextField = "Text";
DropDownList2.DataValueField = "Value";
DropDownList2.DataBind();
}
うまくいかない方法 (SelectedValue
常に ddl in の最初の値ですPage_Load
):
protected void Page_Init(object sender, EventArgs e)
{
var numberQuestionsPerPageDdlValues = new[]
{
new ListItem(Resources.Site.OriginalStructure, "0"),
new ListItem("5", "5"),
new ListItem("10", "10"),
new ListItem("15", "15"),
new ListItem("20", "20"),
new ListItem("25", "25")
};
DropDownList1.Items.AddRange(numberQuestionsPerPageDdlValues);
DropDownList2.Items.AddRange(numberQuestionsPerPageDdlValues);
}