Frage

Wie kann ich zusätzliche Informationen zu der Service-Methode übergeben, die Sammlung von Gegenständen der Rückkehr? Ich werde versuchen zu erklären, was ich meine, ich habe zwei Textfelder auf einem Formular, ich brauche Namen ausfüllen, anhand einer bestimmten Konto-ID in einer Datenbank. so, ich brauche eine ganze Zahl mit der getNamesForDropDown Methode übergeben werden. Ich konnte nicht herausfinden, was zu tun ist, so habe ich die falsche Sache, und verwendet, um die CompletionSetCount, um tatsächlich die Informationen weitergeben ich brauchte:

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[] getNamesForDropDown(string prefixText, int count) 
{
   String sql = "Select fldName From idAccountReps Where idAccount = " + count.ToString();
   //... rest of the method removed, this should be enough code to understand
   //... the evil wrongness I did. 
}

in meiner Vorderseite aspx Datei, stelle ich die CompletionSetCount die Konto-ID der Benutzer basiert weg ist zur Zeit auf dieser Seite angezeigt wird.

<ajaxtk:AutoCompleteExtender 
    runat="server" 
    ID="AC1" 
    TargetControlID="txtAccName"
    ServiceMethod="getNamesForDropDown"
    ServicePath="AccountInfo.asmx"
    MinimumPrefixLength="1" 
    EnableCaching="true"
    CompletionSetCount='<%# Eval("idAccount") %>'
/>

Also, das ist auf jeden Fall ein falscher Weg, ... was der richtige Weg sei?

War es hilfreich?

Lösung

azam hat das Recht, Ideen-, aber die Unterschrift der Autocomplete-Methode kann auch einen dritten Parameter hat:

public string [] yourmethod (string prefixText, int count, string contextKey )

Sie können die Ergebnisse der contextKey Zeichenfolge mit Azam der Methoden- Split, aber diese Weise müssen Sie sich keine Sorgen über sanatizing die Eingabe des Benutzers des .split () 's Begrenzer (:)

Andere Tipps

Holy Rauch, ich denke, das ist, was ich brauche, ich schwöre, dass ich nie diese Option gesehen, bevor ich die Programmierung dieses gestartet. Ist das eine neue Eigenschaft der AutoCompleteExtender?

Auszug aus Dokumentation :

ContextKey - User / Seite spezifischer Kontext eine optionale Überlastung der Web-Methode von ServiceMethod / ServicePath beschrieben zur Verfügung gestellt. Wenn der Kontextschlüssel verwendet wird, soll es die gleiche Signatur mit einem zusätzlichen Parameter hat contextKey vom Typ Zeichenfolge mit dem Namen:

[System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod] public string [] GetCompletionList (     String prefixText, int count, string contextKey) {...}

Beachten Sie, dass Sie „GetCompletionList“ mit einem Namen Ihrer Wahl ersetzen, aber der Rückgabetyp und Parameternamen und Typ müssen genau übereinstimmen, einschließlich Fall.

Edit: Es spielt keine Rolle, ob es neu ist oder nicht, oder ob ich es einfach völlig übersehen. Es funktioniert, und ich bin glücklich. Es dauerte etwa 10 Minuten von zu herauszufinden, meine eigenen Antwort verwechselt werden.

Wenn Sie mögen Sie einen Separator mit dem prefixText verwenden können. und auf dem Service-Ende können Sie die zwei Elemente aufgeteilt: So können Sie „bcd 1“: pass

string[] arguments = prefixText.Split(':'); 
int id = Int32.Parse(arguments[0]);
string text = arguments[1]; 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top