有非唯一值的下拉列表

本文关键字:下拉列表 唯一 | 更新日期: 2023-09-27 18:18:39

我有一个代码填充的下拉列表,列表显示一切,因为它应该但是如果从下拉列表中选择Pink Water Buffalo,显示的文本是Yellow Snake我设置不正确吗?这是完整的语法(并且我没有选择可能导致错误的下拉列表的索引更改事件)

protected void Page_Load(object sender, EventArgs e)
{
    IP = HttpContext.Current.Request.Params["HTTP_CLIENT_IP"] ?? HttpContext.Current.Request.UserHostAddress;
    if (!IsPostBack)
    {
      message.Visible = false;
      populateDDL();
    }
}
protected void populateDDL()
{
    var item = new List<ListItem>
    {
       new ListItem("", ""),
       new ListItem("Yellow Snake", "9"),,
       new ListItem("This item works", "12"),
       new ListItem("Pink Water Buffalo", "9"),
    };
    this.dropdownlistone.DataTextField = "Text";
    this.dropdownlistone.DataValueField = "Value";
    this.dropdownlistone.DataSource = item;
    this.dropdownlistone.DataBind();
}


编辑

这是我的asp,用于创建下拉列表

<asp:DropDownList ID="dropdownlistone" runat="server" Height="20px" Width="278px"
                    AutoPostBack="true"> </asp:DropDownList>



编辑# 2
如果您有多个下拉列表,它会很难看,而且语法很多,但对我来说这不是什么大问题。我所做的是为下拉列表中的每一项添加一个。0,1等,并增加。然后使用.Split方法只剥离相关部分,如下所示:

protected void populateDDL()
{
    var item = new List<ListItem>
    {
       new ListItem("", ""),
       new ListItem("Yellow Snake", "9.0"),,
       new ListItem("This item works", "12.1"),
       new ListItem("Pink Water Buffalo", "9.2"),
    };
    this.dropdownlistone.DataTextField = "Text";
    this.dropdownlistone.DataValueField = "Value";
    this.dropdownlistone.DataSource = item;
    this.dropdownlistone.DataBind();
}
String[] stringsplit = dropdownlistone.SelectedValue.ToString().Split('.');
String itemprice = stringsplit[0].Trim();

有非唯一值的下拉列表

在您的示例中,"yellow Snake"answers"Pink Water Buffalo"的值都设置为9。

您必须找出一种方法使每个项目的值唯一。否则,您将得到意想不到的结果,可能跨不同的浏览器。我使用的方法是将文本和值与管道(|)相结合:

var item = new List<ListItem>
{
   new ListItem("", ""),
   new ListItem("Yellow Snake", "9|Yellow Snake"),
   new ListItem("This item works", "12|This item works"),
   new ListItem("Pink Water Buffalo", "9|Pink Water Buffalo"),
};

那么你可以很容易地通过拆分得到值:

string value = dropdownlistone.SelectedValue.Split('|')[0];

我更喜欢管道,因为它很少用作显示值。如果文本中包含圆点,那么使用圆点可能会遇到一些问题,比如"黄蛇很棒,但绿蛇最好。"