解决ajax autocomplete自动完成功能,传参数问题

在项目中解决一个头疼的问题 我用的是vs2005,是一个程序n多个数据库,在自动完成的时候,调用的是webservice,在webservice中session,application并不可用,没有可用的全局变量,只好想其它办法,开始想在调用的时候传一个对象过来,可是autocomplete控件并不允许你这么做,再触发发事件的时候就直接初始化webservice的构造函数,然后调用方法,用httpmoudel也不可以,经查资料得知,可以传自定义参数,能传个参数那简直是救命的稻草,于是赶快这么做,可惜本人的控件并不支持,是由于本人的ajax版本过低造成的,所以立马下载更高的ajax版本,找了半天竟然都是ajax 3.0或3.5的,本人的是1.0.10301.0,网上说1.0.2...,没找到,家里面电脑上有个1.0.11119.0,呵呵可以用,立马拿来使用,本人的ajax控件卸载掉,然后安装,最后开始调试,调试的时候也很郁闷,写好了代码怎么也不执行webservice的方法,很是郁闷,原来在调用的时候方法里面的参数不能随便写,包括大小写,郁闷呀,为什么是写死的呢,实在太烂了,费了好半天的功夫,终于好了,代码如下;

 客户:</td>
                            <td ><asp:TextBox ID="tbkh" runat="server"  Width="300px"   CssClass="editcss" ></asp:TextBox>
                             <cc1:AutoCompleteExtender ID="ajaxtbkh" runat="server" ServiceMethod="getkhxx" ServicePath="../webservice.asmx"
                                            MinimumPrefixLength="1" CompletionSetCount="10" TargetControlID='tbkh' EnableCaching="true" UseContextKey="true"
                                            CompletionInterval="500">
                                                   </cc1:AutoCompleteExtender>
                            </td>

后台代码

 ajaxtbkh.ContextKey = 传你需要的参数

 

 

webservice:

添加代码如下:

[System.Web.Script.Services.ScriptService()]

 

    [WebMethod]
    public string[] getkhxx(string prefixText, int count, string contextKey)
    {

        List<String> khxx = new List<string>();

        SqlConnection sqlconn = null;
              sqlconn = new SqlConnection(contextKey);

        string sqlstring = "select top 20 khbh,isnull(khmc,'') khmc from khda where isnull(ifjy,0)=0 and ((khbh like @khbh) or (khmc like @khmc) or (zjm like @zjm)) ";
        SqlCommand sqlcomm = new SqlCommand(sqlstring, sqlconn);
        SqlParameter param;
        param = new SqlParameter(); param.ParameterName = "@khbh"; param.Value = prefixText + "%"; sqlcomm.Parameters.Add(param);
        param = new SqlParameter(); param.ParameterName = "@khmc"; param.Value = "%" + prefixText + "%"; sqlcomm.Parameters.Add(param);
        param = new SqlParameter(); param.ParameterName = "@zjm"; param.Value = "%" + prefixText + "%"; sqlcomm.Parameters.Add(param);
        sqlconn.Open();
        SqlDataReader sqldr = sqlcomm.ExecuteReader();

        while (sqldr.Read())
        {
            khxx.Add(sqldr.GetString(0) + " " + sqldr.GetString(1));//
        }
        sqldr.Close();
        sqlconn.Close();
        return khxx.ToArray();
    }

 


 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值