我目前在我的ASP.NET Windows Form App中遇到严重的错误。我有两个DropDownList
,以相同的方式实现它们,但是它们的行为不同。
问题:
SelectedIndex
重置为第一项。SelectedIndex
。它一直在执行此行为,但是我无法发现我做错了什么。
我的代码:
在我的HTML
代码中,我有两个DropDownList
控件。
<div>
<asp:DropDownList runat="server" ID="GroepSelect" AutoPostBack="true" AppendDataBoundItems="true" />
<asp:DropDownList runat="server" ID="VakSelect" AutoPostBack="true" AppendDataBoundItems="true" />
</div>
我正在用C#代码填充控件:
protected void Page_Load(object sender, EventArgs e) {
Database db = new Database();
if (!IsPostBack) {
GroepSelect.DataSource = GenereerDummyGroepen(); // returns a List<ListItem>
GroepSelect.DataTextField = "Text";
GroepSelect.DataValueField = "Value";
GroepSelect.DataBind();
GroepSelect.SelectedValue = "1";
VakSelect.DataSource = db.GetVakken(); // returns a List<Vak>
VakSelect.DataTextField = "Omschrijving";
VakSelect.DataValueField = "Id";
VakSelect.DataBind();
VakSelect.SelectedValue = "1";
}
// Use the SelectedValue to determine which data to get out of the database
Medewerkers = db.GetMedewerkers(int.Parse(GroepSelect.SelectedValue));
Opdracht = db.GetOpdrachten(int.Parse(VakSelect.SelectedValue)).First();
Resultaten = db.GetResultaten(Opdracht.Id, int.Parse(GroepSelect.SelectedValue));
GenereerTabel();
}
根据要求,我的GenereerDummyGroepen()
代码如下:
private List<ListItem> GenereerDummyGroepen() {
return new List<ListItem>()
{
new ListItem("Groep 1", "1"),
new ListItem("Groep 2", "1")
};
}
为什么我要这样实现?
我尝试根据Medewerkers
,Opdracht
和Resultaten
的内容填充定制的数据透视表。这些列表的内容取决于DropDownList控件中的选定项目。这些控件的预期行为是,在更改控件的那一刻,该表应重新填充。我在这里遵循的策略是正在处理页面回发,并使用AppendDataBoundItems=true
记住DropDownList的内容,以便在新刷新的页面上可以生成表。
我的问题
我正在寻找答案:为什么会有一致的不同行为? ListItem
类与我的自定义类Vak
的行为是否不同?
答案 0 :(得分:1)
在这里,我想问题在于您的功能
GenereerDummyGroepen();
请在此处输入您的代码。在您的代码中,对于所有listItem,“值”字段可能具有相同的数据。因此,它会将默认值更改为firstIndex,因为所有值都相同。