Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ASP.NET从C#中的SQL Server表中自动完成文本框中的值_C#_Asp.net_Sql Server - Fatal编程技术网

如何使用ASP.NET从C#中的SQL Server表中自动完成文本框中的值

如何使用ASP.NET从C#中的SQL Server表中自动完成文本框中的值,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我得到了一个SQL表,其列名为Name,Ascii\u Name,alternative names。当用户从值集中键入名称时,自动完成必须相应地显示值 例如,如果用户键入“Aba”,则必须显示以“Aba”开头的所有值,包括“备用名称”列中不遵循此模式的值,如abt。为了更清楚,另一个例子是,只要他输入Abayah,它就必须显示所有遵循此模式的名称,包括来自备用名称的名称,以及Abahahahran、abayrafda +------------+------------------+-----

我得到了一个SQL表,其列名为
Name
Ascii\u Name
alternative names
。当用户从值集中键入名称时,自动完成必须相应地显示值

例如,如果用户键入“Aba”,则必须显示以“Aba”开头的所有值,包括“备用名称”列中不遵循此模式的值,如abt。为了更清楚,另一个例子是,只要他输入Abayah,它就必须显示所有遵循此模式的名称,包括来自备用名称的名称,以及Abahahahran、abayrafda

+------------+------------------+--------------------------------------------------+
| Name       | Ascii_Name       |                Alternate_names                   |
+------------+------------------+--------------------------------------------------+
| Abat       | Abat1            | Abat, Abat1, abt                                 |
| Abayahr    | Abayahr1         | Abayahr,Abayahr1, abayahr, abahyahran, abayrafda |
| Abayah     | Abayah1          | Abayah,Abayah1, abayahtr, abayahnwer             |
| Abath      | Abath1           | Abath, Abath1, abatgh, abatdfg                   |
| Carne      | Carnt            | Carne, Carnt, canrtrt, carnas                    |
+------------+------------------+--------------------------------------------------+
我在达到这个要求方面有点不知所措,任何关于这个方向的建议或建议都将不胜感激


在实现这一点上,我并没有要求任何只使用代码的指标或广泛的指导方针。

您可以使用存储过程或带有
实体框架的LINQ。下面是一个存储过程的示例

存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AutoComplete_Search]
     @keyword NVARCHAR(50)
AS
BEGIN
    SELECT Name, Ascii_Name, Alternate_names
    FROM your_table
    WHERE Name LIKE '%' + @keyword + '%' OR Ascii_Name LIKE '%' + @keyword + '%' OR Alternate_names LIKE '%' + @keyword + '%'

END
.cshtml代码是:

<script type="text/javascript">
        $(function () {
            $("#txtCustomer").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '/Home/AutoComplete/',
                        data: "{ 'keyword': '" + request.term + "'}",
                        dataType: "json",
                        type: "POST",

                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            response($.map(data, function (item) {
                                return item;
                            }))
                        },
                        error: function (response) {
                            alert(response.responseText);
                        },
                        failure: function (response) {
                            alert(response.responseText);
                        }
                    });
                },
                select: function (e, i) {
                    $("#hfCustomer").val(i.item.val);
                },
                minLength: 1
            });
        });
    </script>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <input type="text" id="txtCustomer" name="CustomerName" />    
    }

您可以将存储过程或LINQ与
实体框架一起使用。下面是一个存储过程的示例

存储过程:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AutoComplete_Search]
     @keyword NVARCHAR(50)
AS
BEGIN
    SELECT Name, Ascii_Name, Alternate_names
    FROM your_table
    WHERE Name LIKE '%' + @keyword + '%' OR Ascii_Name LIKE '%' + @keyword + '%' OR Alternate_names LIKE '%' + @keyword + '%'

END
.cshtml代码是:

<script type="text/javascript">
        $(function () {
            $("#txtCustomer").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '/Home/AutoComplete/',
                        data: "{ 'keyword': '" + request.term + "'}",
                        dataType: "json",
                        type: "POST",

                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            response($.map(data, function (item) {
                                return item;
                            }))
                        },
                        error: function (response) {
                            alert(response.responseText);
                        },
                        failure: function (response) {
                            alert(response.responseText);
                        }
                    });
                },
                select: function (e, i) {
                    $("#hfCustomer").val(i.item.val);
                },
                minLength: 1
            });
        });
    </script>
    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
        <input type="text" id="txtCustomer" name="CustomerName" />    
    }

您可以使用Ajax控件工具包。例如:

<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods = "true">
</asp:ScriptManager>

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

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchCustomers(string prefixText, int count)
{
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["constr"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "select ContactName from Customers where " +
            "ContactName 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["ContactName"].ToString());
                }
            }
            conn.Close();
            return customers;
        }
    }
}


您可以使用Ajax控件工具包。例如:

<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods = "true">
</asp:ScriptManager>

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

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> SearchCustomers(string prefixText, int count)
{
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["constr"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "select ContactName from Customers where " +
            "ContactName 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["ContactName"].ToString());
                }
            }
            conn.Close();
            return customers;
        }
    }
}


查看HTML5
然后以这种方式将表格数据呈现到页面中。请澄清您使用的是WebForms还是MVC。@SeaCharp WebForms查看HTML5
,然后以这种方式将表格数据呈现到页面中。请澄清您使用的是WebForms还是MVC。@SeaCharp WebForms