有非唯一值的下拉列表
本文关键字:下拉列表 唯一 | 更新日期: 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];
我更喜欢管道,因为它很少用作显示值。如果文本中包含圆点,那么使用圆点可能会遇到一些问题,比如"黄蛇很棒,但绿蛇最好。"