【问题标题】:How to select multiple items using Autocomplete extender in c#?如何在 C# 中使用自动完成扩展器选择多个项目?
【发布时间】:2015-09-20 13:17:09
【问题描述】:

在我的项目中,我正在使用自动完成扩展器。使用它我只选择一个项目。但我想选择多个项目。我应该做什么。请帮助我。以下是我的代码:

aspx 页面:

<asp:TextBox ID="TextBox1" runat="server"  CssClass="autosuggest  ui-timepicker-input" Width="300px"></asp:TextBox>

        <ajaxToolkit:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" DelimiterCharacters=""
            Enabled="True" ServiceMethod="GetListofCountries" MinimumPrefixLength="2" EnableCaching="true" CompletionSetCount="10" CompletionInterval="10"  FirstRowSelected="false"
            TargetControlID="TextBox1">
        </ajaxToolkit:AutoCompleteExtender>

aspx.cs 页面:

[System.Web.Script.Services.ScriptMethod()]
        [System.Web.Services.WebMethod]
        public static List<string> GetListofCountries(string prefixText, int count)
        {
            //using (SqlConnection sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["con2"].ConnectionString))
            //{
            //    sqlconn.Open();
            //    SqlCommand cmd = new SqlCommand("select UserEmail from [User]  where Useremail like '%" + prefixText + "%'", sqlconn);
            //    cmd.Parameters.AddWithValue("@prefixText", prefixText);
            //    SqlDataAdapter da = new SqlDataAdapter(cmd);
            //    DataTable dt = new DataTable();
            //    da.Fill(dt);
            //    List<string> Emailid = new List<string>();
            //    for (int i = 0; i < dt.Rows.Count; i++)
            //    {
            //        Emailid.Add(dt.Rows[i]["UserEmail"].ToString());
            //    }
            //    return Emailid;
            //}





            List<string> customers = new List<string>();
            using (SqlConnection conn = new SqlConnection())
            {
                List<string> terms = prefixText.Split(',').ToList();
                terms = terms.Select(s => s.Trim()).ToList();

                //Extract the term to be searched from the list
                string searchTerm = terms.LastOrDefault().ToString().Trim();

                //Return if Search Term is empty
                if (string.IsNullOrEmpty(searchTerm))
                {
                  //  return 
                }

                //Populate the terms that need to be filtered out
                List<string> excludeTerms = new List<string>();
                if (terms.Count > 1)
                {
                    terms.RemoveAt(terms.Count - 1);
                    excludeTerms = terms;
                }

                conn.ConnectionString = ConfigurationManager
                        .ConnectionStrings["con2"].ConnectionString;
                using (SqlCommand cmd = new SqlCommand())
                {
                    string query = "select UserEmail from [User]  where Useremail like '%" + prefixText + "%'";

                    //Filter out the existing searched items
                    if (excludeTerms.Count > 0)
                    {
                        query += string.Format(" and UserEmail not in ({0})", string.Join(",", excludeTerms.Select(s => "'" + s + "'").ToArray()));
                    }
                    cmd.CommandText = query;
                    cmd.Parameters.AddWithValue("@prefixText", prefixText);
                    cmd.Connection = conn;
                    conn.Open();
                    using (SqlDataReader sdr = cmd.ExecuteReader())
                    {
                        while (sdr.Read())
                        {
                            //customers.Add(string.Format("{0}-{1}", sdr["Userid"], sdr["CustomerId"]));
                            customers.Add(string.Format("{0}", sdr["UserEmail"]));
                        }
                    }
                    conn.Close();
                }
                return customers;


            }

但它只给出一个值。我想选择多个项目。请帮助我。

【问题讨论】:

  • 使用 SQL 参数代替 " + prefixText + "
  • @Roman Dibikhin sql 参数是什么意思?
  • 我正在使用 cmd.Parameters.AddWithValue("@prefixText", prefixText);
  • 是的,它会让你的代码更安全。
  • @Roman Dibikhin 但是如何选择多个项目。请帮助我

标签: c# asp.net asp.net-ajax autocompleteextender


【解决方案1】:

最后我得到了上述问题的答案。在 AutoCompleteExtender 添加 DelimiterCharacters="," and ShowOnlyCurrentWordInCompletionListItem="true" 。为 AutoCompleteExtender 添加这两项。这对我有用。如果有人想要这类问题,我希望这个答案对你有帮助,这就是我在这里发帖的原因。谢谢。

【讨论】:

  • 它正在工作。如果它正在工作,请给 +1 。谢谢
猜你喜欢
  • 2011-12-13
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2018-02-28
  • 2011-08-02
相关资源
最近更新 更多