我有一个带有复选框的下拉菜单,我想只显示所选项目,但我的问题是它为同一项目显示两次。例如,如果我选择项目#4和#7,它将显示如下4 4,7 7.如何从下拉列表中仅显示所选项目的唯一值?
string myList = string.Empty;
foreach (System.Web.UI.WebControls.ListItem item in facDDL.Items)
{
if (item.Selected)
{
myList += item.Text + " " + item.Value + ",";
}
}
答案 0 :(得分:0)
这是因为您同时使用文本和值。
查看https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitem.value(v=vs.110).aspx
您可以通过将下拉内容更改为:
来更好地了解效果<asp:DropDownList ID="UserSelectionDropDownControl" runat="server">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
<asp:ListItem Value="4">Four</asp:ListItem>
<asp:ListItem Value="5">Five</asp:ListItem>
</asp:DropDownList>
在这种情况下,当选择列表项中的第四行时,您的字符串将是
四,4,
答案 1 :(得分:0)
我的猜测是你永远不会提供Key Value对作为ListItem属性。
如果你在aspx页面上这样做
<asp:ListItem>Text</asp:ListItem>
Key和Value都是一样的。所以你必须改为
<asp:ListItem Text="Value" Value="3"></asp:ListItem>
如果要绑定代码中的数据,请确保指定键和值列。
DropDownList1.DataSource = mySource;
DropDownList1.DataTextField = "Text";
DropDownList1.DataValueField = "Value";
DropDownList1.DataBind();
或者从代码后面一次添加一个
DropDownList1.Items.Insert(0, new ListItem("Text", "Value", true));
答案 2 :(得分:0)
我所做的就是替换这个
myList += item.Text + " " + item.Value + ",";
用这个
myList += "'" + item.Value + "', ";
它就像一个魅力。 感谢