asp:dropDownList选择值而不是键

时间:2019-09-11 14:12:05

标签: c# asp.net

我将数据绑定到asp:DropDownList中,就像这样:

MyDDL.DataSource = DAL.GetKeyValuePairs();
MyDDL.DataTextField = "Key";
MyDDL.DataValueField = "Value";
MyDDL.DataBind();

在我的html中,我定义了这样的列表:

<asp:DropDownList
    runat="server"
    ID="MyDDL"
    ClientIDMode="Static"
    Visible="true"
    OnSelectedIndexChanged="MyDDL_SelectedIndexChanged"
    AutoPostBack="True"
    ViewStateMode="Enabled"
    EnableViewState="True" />

问题是,如果我从下拉列表中选择一个值与另一个值重复的键,则该下拉列表会自动选择具有该值的键的第一个实例,而不仅仅是选择键!

例如:

dropDownList显示

Key1
Key2
Key3
Key4

与键关联的值是:

Key1 - value1
Key2 - value2
Key3 - value3
Key4 - value3 (notice this last value is the same as for key3)

因此,当我从dropDownList中选择“ Key4”时,它实际上为我选择了Key3 。

为什么会这样?这是代码的另一部分负责吗,还是dropDownLists是如何工作的?当我拉入.DataSource时,我的数据已正确返回。我可以看到正确的键/值对,只是不允许我在前端选择某些键?!

1 个答案:

答案 0 :(得分:1)

DataTextField属性指定了显示列表项文本的来源。

DataValueField属性指定列表项将从中检索每个元素的值的源(该值是每个项的唯一键)。

因此,尽管有点令人困惑,但我认为与KeyValuePair类的映射与您所做的相反,请尝试:

MyDDL.DataTextField = "Value";
MyDDL.DataValueField = "Key";