65.9K
CodeProject 正在变化。 阅读更多。
Home

带数据库的自动完成控件扩展

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1投票)

2008年3月30日

CPOL
viewsIcon

21764

downloadIcon

323

带数据库的自动完成控件扩展

引言

AjaxToolKit 的 autoComplete 控制器扩展,带有数据库交互功能

背景

本文的背景是使用 Web 服务来调用数据库

使用代码

关于如何使用文章或代码的简要说明。类名、方法和属性,任何技巧或窍门。

代码块应设置为“Formatted”样式,如下所示

 
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AutoComplete.aspx.cs" Inherits="AutoComplete" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <table border="0" cellpadding="0" cellspacing="0" style="width: 80%" align="center">
            <tr>
                <td style="width: 100px">
                     
                </td>
                <td style="width: 100px">
                     
                </td>
                <td style="width: 100px">
                     
                </td>
            </tr>
            <tr>
                <td style="width: 100px">
                     
                </td>
                <td style="width: 100px">
                    <asp:TextBox runat="server" ID="myTextBox" Width="300" autocomplete="off" />
                    <ajaxToolkit:AutoCompleteExtender runat="server" ID="autoComplete1" TargetControlID="myTextBox"
                        ServicePath="AutoComplete.asmx" ServiceMethod="GetCompletionList" MinimumPrefixLength="1"
                        CompletionInterval="200" EnableCaching="true" CompletionSetCount="12" />
                </td>
                <td style="width: 100px">
                     
                </td>
            </tr>
            <tr>
                <td style="width: 100px">
                     
                </td>
                <td style="width: 100px">
                     
                </td>
                <td style="width: 100px">
                     
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

<script type="text/javascript">
// Work around browser behavior of "auto-submitting" simple forms
var frm = document.getElementById("aspnetForm");
if (frm) {
           frm.onsubmit = function() { return false; };
      }
</script>

 
using System;
using System.Web;
using System.Collections;
using System.Collections.Generic;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.SqlClient;
using System.Configuration; 

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class AutoComplete : WebService
{
    string connectionString = string.Empty;
    DataTable dt = null;
    SqlCommand objCommnad = null;
    SqlDataAdapter da = null;
    SqlConnection con = null;
    public AutoComplete()
    {
    }

    [WebMethod]
    public string[] GetCompletionList(string prefixText, int count)
    {
        if (count == 0)
        {
            count = 10;
        }

        if (prefixText.Equals("xyz"))
        {
            return new string[0];
        }

        Random random = new Random();
        List<string> items = new List<string>(count);
        for (int i = 0; i < count; i++)
        {
            char c1 = (char)random.Next(65, 90);
            char c2 = (char)random.Next(97, 122);
            char c3 = (char)random.Next(97, 122);

            items.Add(prefixText + c1 + c2 + c3);
        }

        //return items.ToArray();

        return getCompany(prefixText); 

        /////////////////Rizwan Code Here \\\\\\\\\\\\\\\\\\\\\\\

    }
    private string[] getCompany(string CompanyNameLike)
    {
        connectionString = ConfigurationManager.AppSettings["ConStr1"].ToString();
        con = new SqlConnection(connectionString);
        try
        {
            con.Open();
            objCommnad = new SqlCommand();
            objCommnad.Connection = con;
            objCommnad.CommandType = CommandType.StoredProcedure;
            objCommnad.CommandText = "LU_Select_ProPerty";
            objCommnad.Parameters.Add("@CompanyName", SqlDbType.VarChar).Value = CompanyNameLike;
            da = new SqlDataAdapter(objCommnad);
            dt = new DataTable();
            da.Fill(dt);
            //return dt;
        }
        catch (Exception ex)
        {
            con.Close();
            throw ex;
        }
        finally
        {
            con.Close();
        }
        List<string> items = new List<string>(dt.Rows.Count);
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            items.Add(dt.Rows[i]["pro_name"].ToString());     
        }
        return items.ToArray() ;
    }
}


        

请记得使用语言下拉菜单设置代码片段的语言。

使用“var”按钮将变量或类名包裹在&lt;code&gt;标签中,例如this

关注点

在编写代码的过程中,你学到了什么有趣/好玩/令人恼火的东西吗? 你做了什么特别巧妙、疯狂或异想天开的事情吗?

历史

在此处保持您所做的任何更改或改进的实时更新。

© . All rights reserved.