我在代码中填充了一个下拉列表,如果从下拉菜单中选择了 cell.setOnMouseEntered(e -> showPopup(cell));
cell.setOnMouseExited(e -> hidePopup());
,列表会显示但的所有内容,显示的文字为Pink Water Buffalo
我错误地设置了什么吗?这是完整的语法(我没有为下拉列表选择索引更改事件,可能导致错误)
Yellow Snake
的修改
这是我用来创建下拉列表的asp
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();
}
编辑#2
如果你有多个下拉列表,它很丑陋,语法很多,但对我来说这并不是什么大问题。我所做的是添加了一个.0,.1等,并为下拉列表中的每个项目递增。然后使用<asp:DropDownList ID="dropdownlistone" runat="server" Height="20px" Width="278px"
AutoPostBack="true"> </asp:DropDownList>
方法仅删除相关的部分:
.Split
答案 0 :(得分:1)
在你的例子中,&#34;黄色蛇的价值&#34;和&#34; Pink Water Buffalo&#34;都被设置为9.&#34;黄蛇&#34;列表中排在第一位,这就是你得到的那个。
答案 1 :(得分:0)
您必须找到一种方法,使每个项目的值都是唯一的。否则,您可能会在不同的浏览器中获得意外结果。我使用的方法是将文本和值与管道(|
):
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];
我更喜欢管道,因为它几乎没有用作显示值。如果文本中包含点,则使用点可能会遇到一些问题,例如“黄色蛇很棒,但绿色很好。”