如何在asp.net的多选下拉文本字段中以逗号分隔显示所选项目

时间:2016-09-15 10:16:49

标签: c# asp.net

在我的网络应用程序中,我试图在多重选择下拉文本字段中以逗号分隔显示所选项目是否可以这样做,如何能够这样做,任何人都可以告诉我。示例图片是链接GCD cancel async block?

我试过了:

.aspx:

<asp:DropDownCheckBoxes ID="dropdown1" runat="server" UseSelectAllNode="true" UseButtons="true" OnSelectedIndexChanged="dropdown1_SelectedIndexChanged" AutoPostBack="true"><Style DropDownBoxBoxWidth="200"/></asp:DropDownCheckBoxes>

.CS

      public void ddlsbind()
    {
    string str=string.Empty;
                string query = "select distinct col1 from Collection where sample='" + ddl2.SelectedItem.Text.ToString() + "' and col1 IS NOT NULL";            
 SqlCommand cmd = new SqlCommand(query, con);
                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);        
                ddlInsurance.DataSource = dt;
                ddlInsurance.DataTextField = "col1";
                ddlInsurance.DataValueField = "col1";
                ddlInsurance.DataBind();
    }

任何人都可以帮我解决这个问题。
谢谢

1 个答案:

答案 0 :(得分:1)

伪码:

private void dropdown1_SelectedIndexChanged(object sender, EventArgs e){
    List<string> checkedList = new List<string>();
    foreach(checkbox c in dropdown1){
        if(c.Checked){
            checkedList.Add(c.Value/Text/Whatever);
        }
    }
    myTextField.Text = String.Join(",",checkedList);
 }

您正在寻找的代码在您的控制文档中有明确规定:

  protected void btnSubmit_Click(object sender, EventArgs e)

{
    List<String> CountryID_list = new List<string>();
    List<String> CountryName_list = new List<string>();
    foreach (System.Web.UI.WebControls.ListItem item in ddchkCountry.Items)
    {
        if (item.Selected)
       {
           CountryID_list.Add(item.Value);
           CountryName_list.Add(item.Text);
       }
       lblCountryID.Text = "Country ID: "+ String.Join(",", CountryID_list.ToArray());
       lblCountryName.Text = "Country Name: "+ String.Join(",", CountryName_list.ToArray());
   } 

}

在您的特定情况下,由于文本和值相同,您只需要一个列表:

   protected void dropdown1_SelectedIndexChanged(object sender, EventArgs e)
 {
     List<String> checkedList = new List<string>();
     //List<String> CountryName_list = new List<string>();
     foreach (System.Web.UI.WebControls.ListItem item in dropdown1.Items)
     {
        if (item.Selected)
        {
            //CountryID_list.Add(item.Value);
            checkedList.Add(item.Text);
        }
        //I don't know the ID/name of your textbox. You need to change that here:
         myTextBox.Text = String.Join(",", checkedList);
         //lblCountryName.Text = "Country Name: "+ String.Join(",", CountryName_list.ToArray());
     } 
}

将文本框从MyTextBox更改为您正在使用的文本框的实际名称,并且应该这样做。看看我是如何修改示例代码并使用它来从现在开始修改自己的代码。看看它在做什么。

附加信息请记住您使用的控件是自定义的,因此它将具有通过VS intellisense以标准控件的方式无法完全获得的属性/方法/设置。您必须访问http://saplin.blogspot.com/2011/05/dropdowncheckboxes-using-control.html才能了解如何管理自定义控件。

最后,我建议远离自定义控件,直到您对编码更加了解.Net Web应用程序 - 坚持标准控件,并提供详细记录的功能/参数可以从多个来源轻松查找。在掌握了基础知识后,进入自定义控件(或创建自己的控件 - 它们很容易)。