【问题标题】:How to do autocomplete in listview via texbox?如何在列表视图中自动完成到文本框?
【发布时间】:2012-04-04 20:28:19
【问题描述】:

我在文本框中使用自动完成功能,值来自数据库。它工作正常。当我在文本框中输入任何值时,我需要在列表视图中执行此自动完成操作。这是我的代码

  <asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox>
    <cc1:AutoCompleteExtender ServiceMethod="ListView1_SelectedIndexChanged" 
        MinimumPrefixLength="2"
        CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
        TargetControlID="txtContactsSearch"
        ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
    </cc1:AutoCompleteExtender>

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1">
            <ItemTemplate>
                <tr id="Tr1" runat="server">
                    <td id="Td1" runat="server">
                        <asp:Label ID="NameLabel" runat="server" Text='<%#Eval("regon_name") %>' />
                    </td>
                      <td id="Td2" runat="server">
                        <asp:Label ID="Label3" runat="server" Text='<%#Eval("code") %>' />
                    </td>
                </tr>
            </ItemTemplate>
        </asp:ListView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DB_CGTPO_DEVEConnectionString %>"
            SelectCommand="SELECT [regon_name], [code] FROM [region_test]"></asp:SqlDataSource>

 [System.Web.Script.Services.ScriptMethod()]
    [System.Web.Services.WebMethod]
    public static List<string> ListView1_SelectedIndexChanged(string prefixText, int count)
    {
        using (SqlConnection conn = new SqlConnection(""))
        {
            //conn.ConnectionString = ConfigurationManager
            //        .ConnectionStrings["constr"].ConnectionString;
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "select regon_name from region_test where " +
                "regon_name like @SearchText + '%'";
                cmd.Parameters.AddWithValue("@SearchText", prefixText);
                cmd.Connection = conn;
                conn.Open();
                List<string> customers = new List<string>();
                using (SqlDataReader sdr = cmd.ExecuteReader())
                {
                    while (sdr.Read())
                    {

                        customers.Add(sdr["regon_name"].ToString());
                    }
                }
                conn.Close();
                return customers;
            }
        }
    }

有什么建议吗?

【问题讨论】:

  • 请不要重复发布相同的问题。尝试编辑您之前的问题。非常不清楚“在列表视图中执行此自动完成操作”是什么意思。
  • 当我在文本框中输入这些值时,我想从数据库的列表视图中显示这些值
  • @vani 您有访问权限还是愿意使用 Telerik RadTools?如果是这样,我有一个可以分享的解决方案。

标签: c# asp.net listview autocomplete ajaxcontroltoolkit


【解决方案1】:

你为什么不把文本框放在列表视图中..?

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1">
            <ItemTemplate>
                <tr id="Tr1" runat="server">
                    <td id="Td1" runat="server">
                        <asp:Label ID="NameLabel" runat="server" Text='<%#Eval("regon_name") %>' />
                    </td>
                      <td id="Td2" runat="server">
                        <asp:Label ID="Label3" runat="server" Text='<%#Eval("code") %>' />
                    </td>
                </tr>
<tr>
 <td id="Td3" runat="server" colspan="2">
 <asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox>
    <cc1:AutoCompleteExtender ServiceMethod="ListView1_SelectedIndexChanged" 
        MinimumPrefixLength="2"
        CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
        TargetControlID="txtContactsSearch"
        ID="AutoCompleteExtender1" runat="server" FirstRowSelected = "false">
    </cc1:AutoCompleteExtender>
 </td>
</tr>
            </ItemTemplate>
        </asp:ListView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DB_CGTPO_DEVEConnectionString %>"
            SelectCommand="SELECT [regon_name], [code] FROM [region_test]"></asp:SqlDataSource>

【讨论】:

  • 否,如果在文本框中输入任何值(如 asp),则该值必须单独出现在列表视图中
  • 喜欢 stackoverflow 用户 --> 键入以查找用户自动完成
  • 你想让文本框过滤ListView中的记录吗?
  • 我不知道为什么我被否决了。请提供更多信息,说明为什么这被否决。
  • 能否修改 SQLDataSource 中的存储过程以接受区域名称的参数,然后将 SQL 数据源中的控制参数添加到文本框?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
相关资源
最近更新 更多