Autocomplete extender di ajax

giovedì 29 novembre 2012 - 19.10
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7

Fapic Profilo | Junior Member

Ciao a tutti
sto cercando di completare un programma dove digitando in una textBox mi venga letto il contenuto di un campo di una tabella di un database access, ma non succede nulla usando il codice seguente:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ed in code behind:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

potete dirmi dove sbaglio?

ale_fi Profilo | Newbie

Hai provato a mettere un valore alle proprietà CompletionSetCount e CompletionInterval dell'AutoCompleteExtender?
Io ho fatto la stessa cosa proprio pochi giorni fa (in C#) ma mi fa alla grande.
Non conosco benissimo il VB.NET ma sei sicuro che il metodo tirestituisce una collezione di stringhe giusto? Sennò non va.

Fapic Profilo | Junior Member

si le proprietà ci sono, ma visual studio mi dice che:

"Cannot refer to an istance of a class from within a shared method or shared member initialized without an explicit istance of the class"

matteoct Profilo | Junior Member

nel code behind, prima di creare la Function SearchCustomers, hai messo questo codice?

<System.Web.Script.Services.ScriptMethod(), System.Web.Services.WebMethod()>

nel tuo caso:
<System.Web.Script.Services.ScriptMethod(), System.Web.Services.WebMethod()> _
Public Shared Function SearchCustomers(ByVal prefixText As String, ByVal count As Integer) As List(Of String)

saluti

Fapic Profilo | Junior Member

adesso ho modificato così:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
mi da errore su Request.PhysicalApplicationPath)

esattamente ti posto l'errore:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

matteoct Profilo | Junior Member

Intanto correggi tra la prima e la seconda riga, ci va il carattere tra le virgolette: " _ "

e ricontrolla la connessione (percorso/permessi), poi fammi sapere se l'errore cambia

Fapic Profilo | Junior Member

Perdonami, non ho capito dove devo metterlo di preciso " _ "

matteoct Profilo | Junior Member

fai copia/incolla

<System.Web.Script.Services.ScriptMethod(), System.Web.Services.WebMethod()> _
Public Shared Function SearchCustomers(ByVal prefixText As String, ByVal count As Integer) As List(Of String)

Fapic Profilo | Junior Member

niente mi evidenzia ancora la parola Request, ti posto l'immagine dell'errore...

-1x-1 38Kb


il (Request.PhysicalApplicationPat) va il conflitto con la (Public shared function), perchè se metto lo stesso codice in una sub non mi evidenzia come errore la parola request



ho provato pure a cambiare
Request.PhysicalApplicationPat
con
System.Web.HttpContext.Current.Request.ApplicationPath

ma niente...




matteoct Profilo | Junior Member

l'immagine non si vede, ma non importa.

la connessione impostala nel web.config e dalla funzione la richiami solamente, ad esempio:

web.config:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

nel code behind la richiami così:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Fapic Profilo | Junior Member

fatto, questo è un metodo nuovo per me perchè agivo sempre direttamente dalla pagina:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
però adesso devo cambiare connstring con DBconn ?

Fapic Profilo | Junior Member

l'ho modificata cosi, ora non mi da errori ma non succede nulla quando digito
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Fapic Profilo | Junior Member

wowwww funziona

grandeeeee ti ringrazio, spero un giorno di ricambiarti

matteoct Profilo | Junior Member

Perfetto, mi fa piacere

ciao

gsistemi Profilo | Junior Member

Ho lo stesso identico problema... Ho configurato il webservice (che richiamandolo manualmente funziona), ho inserito textbox e autocompleteextender ma sembra che non venga richiamato il webservice. Questo è il codice che uso:

HTML
=============

<form runat="server">
<cc1:ToolkitScriptManager ID="ScriptManager1" runat="server" EnablepageMethods="true"></cc1:ToolkitScriptManager >
<asp:textbox ID="condom_anagr" runat="server" autocomplete="off" clientidmode="Static" />
<cc1:TextBoxWatermarkExtender ID="condom_anagr_waterMark" runat="server" targetControlID="condom_anagr" WatermarkText="Digita un nome..." Enabled="true"></cc1:TextBoxWatermarkExtender>
<cc1:AutoCompleteExtender ID="condom_anagr_autocomplete" MinimumPrefixLength="3" TargetControlID="condom_anagr" CompletionSetCount="10" CompletionInterval="1000" ServiceMethod="anagr_elenco_web" ServicePath="../webservice/gest.asmx" runat="server"></cc1:AutoCompleteExtender>
</form>

WEBSERVICE
===========

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Data.SqlClient
Imports System.Data

<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class gest
Inherits System.Web.Services.WebService
Dim strsql As String

<System.Web.Script.Services.ScriptMethod(), System.Web.Services.WebMethod()> _
Public Function anagr_elenco_web(ByVal testo As String, ByVal lenght As Integer) As List(Of String)

Dim risultati As List(Of String) = New List(Of String)

strsql = "insert into prove ( descri, data ) values ( 'il servizio funziona', getdate() )"
Using myconn As New SqlConnection(ConfigurationManager.ConnectionStrings("mysql").ConnectionString)
myconn.Open()
Using mycmd As New SqlCommand(strsql, myconn)
mycmd.ExecuteNonQuery()
End Using
End Using

strsql = "select * from anagr where nome like @testo order by nome asc"
Using myconn As New SqlConnection(ConfigurationManager.ConnectionStrings("mysql").ConnectionString)
myconn.Open()
Using mycmd As New SqlCommand(strsql, myconn)
mycmd.Parameters.Add(New SqlParameter("@testo", SqlDbType.NVarChar)).Value = "%" & testo & "%"
Using myrepeater = mycmd.ExecuteReader()

While (myrepeater.Read())
risultati.Add(myrepeater.Item("nome"))
End While

End Using
End Using
End Using

Return risultati

End Function

End Class

Cosa sbaglio?!?

Fapic Profilo | Junior Member

ciao, scusami fino ad ora non ho mai lavorato con i web service mi diresti a cosa servono come funzionano e da dove iniziare?

matteoct Profilo | Junior Member

@gsistemi
scusami ma ho letto solo oggi, non so perchè ma non ho ricevuto la notifica.

guarda questo esempio se può esserti utile

http://aspsnippets.com/Articles/Populate-jQuery-AutoComplete-TextBox-from-Database-using-Web-Service-in-ASPNet.aspx

matteoct Profilo | Junior Member

@gsistemi
scusami ma ho letto solo oggi, non so perchè ma non ho ricevuto la notifica.

guarda questo esempio se può esserti utile

http://aspsnippets.com/Articles/Populate-jQuery-AutoComplete-TextBox-from-Database-using-Web-Service-in-ASPNet.aspx
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5