繁体   English   中英

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

[英]ASP.NET Listbox not selecting multiple values

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

<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);
    }
}

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

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

    IEnumerator ie =  ListBox2.Items.GetEnumerator();

    while (ie.MoveNext())
    {
        ListItem li = (ListItem)ie.Current;
        //Use ListItem here
    }    

请尝试以下代码,它将为列表框选择的值返回逗号分隔符字符串

  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 ;

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM