GVKun编程网logo

使用AutocompleteExtender无效或者没反应,输入啥都在webservice里面跟踪不到

5

本文的目的是介绍使用AutocompleteExtender无效或者没反应,输入啥都在webservice里面跟踪不到的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于AJ

本文的目的是介绍使用AutocompleteExtender无效或者没反应,输入啥都在webservice里面跟踪不到的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于AJAX Asp.net AutoCompleteExtender将字符串0010解释为八进制、AjaxControlToolkit AutoCompleteExtender控件演示、ajaxControlToolkit AutoCompleteExtender的用法、ajaxcontroltoolkit:AutoCompleteExtender用法的知识。

本文目录一览:

使用AutocompleteExtender无效或者没反应,输入啥都在webservice里面跟踪不到

使用AutocompleteExtender无效或者没反应,输入啥都在webservice里面跟踪不到

 

以前使用 vs.net2005 建的项目,使用到了微软的 ajax  控件, autocompleteextender,然后建立了 webservice,这个功能完成的很好,一切正常。

 

后来,我的vs 工具升级到了 vs.net2008,因为项目使用,我又使用了 autocompleteextender ,一切照着以前 vs.net2005 时,使用 autocompleteextender 的方法做的,在 vs.net2008 中新建了 webservice ,但是,此功能就是运行不起来, 使用autocompleteextender没反应,输入啥都在webservice里面跟踪不到 。很是奇怪,后来,以网上搜索相关资料,发现一个问题,

 

用 vs.net2008 新建的 webservice ,少了最重要的一句:

 

       [System.Web.Script.Services.ScriptService]

AJAX Asp.net AutoCompleteExtender将字符串0010解释为八进制

AJAX Asp.net AutoCompleteExtender将字符串0010解释为八进制

我在文本框上使用MS AJAX AutoCompleteExtender。除Web服务返回类似“ 0010”的字符串(在这种情况下,它显示为“
8”)外,它都工作正常。

我最终意识到它是将字符串“ 0010”解释为八进制数字(然后通过添加诸如“ 0100”和“ 0x10”之类的字符串来证明这一点。)

我该如何预防?如果Web服务返回“ 0010”,则我希望自动完成扩展程序也显示“ 0010”,而不是将其解释为八进制并显示十进制等效项。

答案1

小编典典

单引号。JavaScript使它成为一个int。

AjaxControlToolkit AutoCompleteExtender控件演示

AjaxControlToolkit AutoCompleteExtender控件演示

原本程序是一个查询文本框,现用户要求改程序,要如google或baidu输入一样,有自动完成功能。下图是已经完成的效果:

实现使用了Web Service技术与Ajax的autocompleteextender的控件。在数据库中,写好存储过程:

CREATE PROCEDURE [ dbo ] . [ usp_Fqa_LotNumberCompletionList ]
(
@PrefixText NVARCHAR ( 4000 ),
@TopCount INT
)
AS
DECLARE @W NVARCHAR ( 4000 ) = @PrefixText + ' % '
EXECUTE ( ' SELECTTOP ' + @TopCount + ' [LotNumber]FROM[dbo].[Fqa]WHERE[IsSubmit]=1AND[LotNumber]LIKE ''' + @w + '''' )

创建一个Web Service,执行存储过程:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;

/// <summary>
/// SummarydescriptionforFqaLotNumberService
/// </summary>
namespace Insus.NET
{
[WebService(Description
= " FqaLotNumberService " ,Name = " FqaLotNumberService " ,Namespace = http://xxx.xxx.com/WebServices/ )]

[WebServiceBinding(ConformsTo
= WsiProfiles.BasicProfile1_1)]
// ToallowthisWebServicetobecalledfromscript,usingASP.NETAJAX,uncommentthefollowingline.
[System.Web.Script.Services.ScriptService]
public class FqaLotNumberService:System.Web.Services.WebService
{
BusinessBaSEObjBusinessBase
= new BusinessBase();

public FqaLotNumberService()
{
// Uncommentthefollowinglineifusingdesignedcomponents
// InitializeComponent();
}

[WebMethod]
public string []GetFqaLotNumber( string prefixText, int count)
{
Parameter[]parameter
= {
new Parameter( " @PrefixText " ,sqlDbType.NVarChar, 4000 ,prefixText),
new Parameter( " @TopCount " ,sqlDbType.Int, 4 ,count)
};
DataTableLotNumberTable
= objBusinessBase.GetDataToDataSet( " usp_Fqa_LotNumberCompletionList " ,parameter).Tables[ 0 ];

ArrayListarray
= new ArrayList();
foreach (DaTarowdaTarow in LotNumberTable.Rows)
{
array.Add(daTarow[
" LotNumber " ].ToString());
}

return ( string [])array.ToArray( typeof ( string ));
}
}
}


上面的Web Service中,你会看到一个类别BusinessBase,可以从下面地址下载:http://www.cnblogs.com/insus/articles/1654653.html

.aspx:

批号: < asp:TextBox ID ="txtLotNumber" runat ="server" ></ asp:TextBox > &nbsp;&nbsp;
< asp:Button ID ="ButtonSearch" runat ="server" OnClick ="ButtonSearch_Cliek" Text ="Search" />
< ajaxToolkit:autocompleteextender ID ="autocompleteextender1" runat ="server" MinimumPrefixLength ="1"
TargetControlID
="txtLotNumber" ServiceMethod ="GetFqaLotNumber" ServicePath ="~/WebServices/FqaLotNumberService.asmx"
CompletionSetCount
="10" >
</ ajaxToolkit:autocompleteextender >


实现过程中,Ajax autocompleteextender控件,只能使用本域的Service,不能跨域,此问题Insus.NET花上不少时间测试。原本Service是摆放在一个单独的WebService的站点上的,取不到数据,只能把Service移至本站点中来。

ajaxControlToolkit AutoCompleteExtender的用法

ajaxControlToolkit AutoCompleteExtender的用法

总结

以上是小编为你收集整理的ajaxControlToolkit AutoCompleteExtender的用法全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

ajaxcontroltoolkit:AutoCompleteExtender用法

ajaxcontroltoolkit:AutoCompleteExtender用法

完整代码如下,请看:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="comboBox测试.WebForm1" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </asp:ToolkitScriptManager>
        <asp:TextBox ID="TextBox1" runat="server" Width="300px"></asp:TextBox>
        <asp:autocompleteextender ID="TextBox1_autocompleteextender" runat="server" ServicePath="AutoComplete.asmx"
            ServiceMethod="GetPort" TargetControlID="TextBox1" MinimumPrefixLength="1"  CompletionSetCount="10"></asp:autocompleteextender>
    </div>
    </form>
</body>
</html>

其中的 AutoComplete.asmx是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

using System.Data;
using System.Data.sqlClient;

namespace comboBox测试
{
    /// <summary>
    /// AutoComplete 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolBoxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class AutoComplete : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string[] GetData(string prefixText,int count)
        {
            string[] data = new string[4] { "中国","中国台湾","中国香港","美国" };
            return data.Where(p => p.IndexOf(prefixText) >= 0).Take(count).ToArray();
        }


        [WebMethod]
        public string[] GetPort(string prefixText,int count)
        {
            string connection = "*****";
            sqlConnection cn;
            DataSet ds = new DataSet();
            using (cn = new sqlConnection(connection))
            {
                cn.open();
                string sql = "******";
                sqlDataAdapter adapter = new sqlDataAdapter(sql,cn);
                adapter.Fill(ds);
                cn.Close();
            }
            int lenght = ds.Tables[0].Rows.Count;
            string[] data = new string[lenght];
            for (int i = 0; i < lenght; i++)
            {
                string temp = ds.Tables[0].Rows[i]["PortName"].ToString() + "  " +
                    ds.Tables[0].Rows[i]["PortCode"].ToString() + "  " +
                    ds.Tables[0].Rows[i]["NationName"].ToString() + "  " +
                    ds.Tables[0].Rows[i]["NationCode"].ToString() + "  ";
                data[i] = temp;
            }
            return data;
        }

    }//end class
}


要提醒的是:

ServiceMethod一定要是: 返回值为string [] 参数一定是 string prefixText 和 int count

今天关于使用AutocompleteExtender无效或者没反应,输入啥都在webservice里面跟踪不到的介绍到此结束,谢谢您的阅读,有关AJAX Asp.net AutoCompleteExtender将字符串0010解释为八进制、AjaxControlToolkit AutoCompleteExtender控件演示、ajaxControlToolkit AutoCompleteExtender的用法、ajaxcontroltoolkit:AutoCompleteExtender用法等更多相关知识的信息可以在本站进行查询。

本文标签: