代码之家  ›  专栏  ›  技术社区  ›  user3035477

ASP.NET列表框未选择多个值

  •  1
  • user3035477  · 技术社区  · 10 年前

    我在我的webform中有一个列表框,我试图从中选择多个值,但我只得到最后选择的值。我尝试了两种方式。首先,我明确添加了列表项:

    <asp:ListBox ID="ListBox2" runat="server" 
        SelectionMode="Multiple" AutoPostBack="True">
        <asp:ListItem>teama</asp:ListItem>
        <asp:ListItem>teamb</asp:ListItem> 
    </asp:ListBox>
    

    第二,我试图绑定到数据库中的表:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ListBox2.SelectionMode = ListSelectionMode.Multiple;
            string scon = ConfigurationManager.ConnectionStrings["Test_AthiraConnectionString"].ConnectionString;
            SqlConnection con=new SqlConnection(scon);
            con.Open();
            SqlCommand cmd = new SqlCommand("select department from department", con);
            cmd.CommandType = CommandType.Text;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            ListBox2.DataSource = ds;
            ListBox2.DataValueField = "department";
            ListBox2.DataTextField = "department";
            ListBox2.DataBind();
            con.Close();
        }
    }
    

    然后我尝试了这些不同的方法来选择多个项目 buttonclick event

    第一:

    string k =null ,k1 = null;
    foreach (int i in ListBox2.GetSelectedIndices())
    {
        k1 = ListBox2.Items[i].Text + "/";
        k += k1;
        Response.Write(k);
    }
    

    第二:

    foreach (ListItem li in ListBox2.Items)
    {
        if (li.Selected == true)
        {
            k += li.Text + "/";
            Response.Write(k);
        }
    }
    

    第三:

    k = String.Join("/", ListBox2.Items
                                 .Cast<ListItem>()
                                 .Where(i => i.Selected)
                                 .Select(i=>i.Value)
                                 .ToArray());
    Response.Write(k);
    

    第四:

    for (int i = ListBox2.Items.Count - 1; i >= 0; i--)
    {
        if (ListBox2.Items[i].Selected == true)
        {
            k1 = ListBox2.Items[i].Text + "/";
            k += k1;
            Response.Write(k);
        }
    }
    

    但它们似乎都不起作用。我只得到最后一个选定的值。

    2 回复  |  直到 10 年前
        1
  •  0
  •   Abhishek Singh    10 年前

    您可以按以下方式访问列表中的项目并检查其财产。

        IEnumerator ie =  ListBox2.Items.GetEnumerator();
    
        while (ie.MoveNext())
        {
            ListItem li = (ListItem)ie.Current;
            //Use ListItem here
        }    
    
        2
  •  0
  •   Dinesh Mandaviya    10 年前

    请尝试以下代码,它将返回列表框所选值的昏迷分隔符字符串

      public string GetSelectedValues()
        {
            string selectedVal = string.Empty;
            int i = 0;
            foreach (int index in lstbox.GetSelectedIndices())
            {
                if (i == 0) 
                   selectedVal = lstbox.Items[index].Value;
                else
                  selectedVal = selectedVal + ";" + lstbox.Items[index].Value.ToString();
                i++;
            }
            return selectedVal ;
    
        }