Использование элемента управления ajax autocompleteextender в asp.net

#asp.net

#asp.net

Вопрос:

Я использую элемент управления ajax AutoCompleteExtender и использую .net 3.5. Я успешно добавляю DLL на вкладку «Мой инструментарий».
Итак, прежде всего, я создаю веб-сайт, а затем перетаскиваю диспетчер сценариев, текстовое поле и элемент управления AutoCompleteExtender на мою страницу default.aspx. Затем я добавляю веб-сервис и определяю один веб-метод, т.е. getSuggestions(). Моя программа выполнена успешно, но я не получаю правильный вывод. Когда я помещаю любой текст в текстовое поле, он не заполняет никаких предложений. Пожалуйста, помогите мне.

Вот мой код веб-сервиса:

 using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Collections.Generic;

/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 

[System.Web.Script.Services.ScriptService]
[System.ComponentModel.ToolboxItem(false)]

public class MyAutocompleteService : WebService
{
    [WebMethod]

    public string[] GetSuggestions(string prefixText, int count)
    {
        List<string> responses = new List<string>();

        for (int i = 0; i < count; i  )

            responses.Add(prefixText   (char)(i   65));

        return responses.ToArray();

    }

}                                                                                               
  

И вот мой код по умолчанию.aspx:

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

<%@ 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>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Services >
        <asp:ServiceReference Path="~/MyAutocompleteService.asmx" />
        </Services>
        </asp:ScriptManager>
        <br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />

        <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            ServiceMethod="GetSuggestions" ServicePath="MyAutocompleteService.asmx" 
            TargetControlID="TextBox1" MinimumPrefixLength ="1" 
            CompletionSetCount ="12" EnableCaching="true">
        </asp:AutoCompleteExtender>
        <br />
        <br />

    </div>
    </form>
</body>
</html>
  

Поэтому, пожалуйста, помогите мне, чего мне не хватает.

Ответ №1:

Чтобы увидеть результаты из веб-службы, вы все должны добавить div, который будет заполнен результатами. Я отредактировал некоторые из приведенных выше кодов.

     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    **<div id="resultsPanel"></div>**
    <br />

    <asp:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
        ServiceMethod="GetSuggestions" ServicePath="MyAutocompleteService.asmx" 
        TargetControlID="TextBox1" MinimumPrefixLength ="1" 
        CompletionSetCount ="12" EnableCaching="true"
        **CompletionListElementID="listPlacement"**>
    </asp:AutoCompleteExtender>
  

Я надеюсь, что это поможет.

Ответ №2:

Попробуйте использовать path без знака «~»

 <asp:ServiceReference Path="MyAutocompleteService.asmx" />
  

Комментарии:

1. Да, я удаляю этот знак ~ . Спасибо