我有一个带有复选框的下拉列表,我只想显示所选项目,但我的问题是它为同一项目显示两次。 例如,如果我选择项目 #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 + ",";
}
}
这是因为您同时使用文本和值。
看看 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,
我的猜测是,您永远不会提供键值对作为列表项属性。
如果在 aspx 页上执行此操作
<asp:ListItem>Text</asp:ListItem>
键和值都是相同的。因此,您必须将其更改为
<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));
我所做的只是替换这个
myList += item.Text + " " + item.Value + ",";
有了这个
myList += "'" + item.Value + "', ";
它就像一个魅力。谢谢