asp.net dropdownlist不记得选择

时间:2018-07-20 08:14:48

标签: c# asp.net

我目前在我的ASP.NET Windows Form App中遇到严重的错误。我有两个DropDownList,以相同的方式实现它们,但是它们的行为不同。

问题:

  • 在DropDownList“ GroepSelect”中选择一个项目时,页面会刷新(按预期),但会将SelectedIndex重置为第一项。
  • 在DropDownList“ VakSelect”中选择一项时,页面会刷新,但也会记住其值为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")
            };
    }

为什么我要这样实现?

我尝试根据MedewerkersOpdrachtResultaten的内容填充定制的数据透视表。这些列表的内容取决于DropDownList控件中的选定项目。这些控件的预期行为是,在更改控件的那一刻,该表应重新填充。我在这里遵循的策略是正在处理页面回发,并使用AppendDataBoundItems=true记住DropDownList的内容,以便在新刷新的页面上可以生成表。

我的问题

我正在寻找答案:为什么会有一致的不同行为? ListItem类与我的自定义类Vak的行为是否不同?

1 个答案:

答案 0 :(得分:1)

在这里,我想问题在于您的功能

GenereerDummyGroepen();

请在此处输入您的代码。在您的代码中,对于所有listItem,“值”字段可能具有相同的数据。因此,它会将默认值更改为firstIndex,因为所有值都相同。