仅使用C#从DropDownCheckBoxes显示所选项目

时间:2017-05-08 18:54:52

标签: c# asp.net

我有一个带有复选框的下拉菜单,我想只显示所选项目,但我的问题是它为同一项目显示两次。例如,如果我选择项目#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 + ",";
    }
}

3 个答案:

答案 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 + "', ";

它就像一个魅力。 感谢