Wie kann ich die automatische Vervollständigung Kontrollskript Seite Setzen Sie sich mit einem Script-Steuerung (ASP.Net)
-
19-08-2019 - |
Frage
Problem Wie kann ich die Ereignisse auf einer Ajax-Toolkit zum automatischen Vervollständigung Steuerung mit einem Skript-Steuerelement auf der Skriptdatei erfassen und zuordnen?
Erklärung
Ich habe im Grunde eine Skript Kontrolle ein Textfeld und eine Autocomplete-Steuerung zu kombinieren, so dass ich eine Arbeitsgenerische Steuerung für eine Autovervollständigung haben könnte. Der nächste Schritt war, um Dinge wie eine Verarbeitungs Bild hinzufügen, während sie für ihre Produkte suchen. Es schien einfach genug.
protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
ScriptControlDescriptor desc = new ScriptControlDescriptor
("NDI.WebControls.Client.GenericAutoComplete", this.ClientID);
desc.AddProperty("autoCompleteID", autoComplete.ClientID);
return new ScriptDescriptor[] { desc };
}
Und dann auf dem Javascript, um das normal:
initialize: function()
{
this._autoComplete = $get(this._autoCompleteID);
//this._autoCompleteID does have a value
this._autoCompleteClientPopulating =
Function.createDelegate(this, this.handleAutoCompleteClientPopulating);
$addHandler(this._autoComplete, "clientPopulating",
this._autoCompleteClientPopulating);
NDI.WebControls.Client.GenericAutoComplete.callBaseMethod(this, 'initialize');
},
Nun sollte dies funktionieren, aber es funktioniert nicht. Warum? Da offenbar keine Kontrolle der automatischen Vervollständigung dort auf die Seite wie eine normale Kontrolle gemacht wird wäre. Also, wenn es um den $ bekommt bekommen Teil es kommt null trotz der ID-Eigenschaft eine Texteigenschaft. (IE die Kontrolle nicht existiert)
Ist das möglich zu tun oder muss ich die OnXyz Eigenschaften Server-Seite verwenden, um ein Verfahren zu vergeben? Wie in:
autocomplete.OnClientPoplating = someScript;
Lösung
ANTWORT
Booyah Found it. Stellt sich heraus, das die automatische Vervollständigung eine in Art und Weise gebaut zuzugreifen es Ereignisse in Javascript ist:
Server-Seite haben Sie die BehaviorID setzen:
autoComplete.BehaviorID = "autoCompleteBehavior";
Und dann legen Sie es in der GetScriptDescriptors Methode:
protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
ScriptControlDescriptor desc = new
ScriptControlDescriptor("NDI.WebControls.Client.GenericAutoComplete", ClientID);
desc.AddProperty("autoCompleteID", autoComplete.BehaviorID);
return new ScriptDescriptor[] { desc };
}
Natürlich müssen Sie die Eigenschaften Skript Seite fügen Sie diesen Wert zu erfassen, und wenn Sie das tun Sie es verwenden müssen, finden zu bekommen. Dann Sie die Event-Handler erstellen müssen:
this._autoComplete = $find(this._autoCompleteID);
this._onAutoCompletePopulating =
Function.createDelegate(this, this.handleOnAutoCompletePopulating);
Schließlich wird die eingebaute Event Setter in der Autocomplete-Steuerung verwenden (Behavior-Objekt):
this._autoComplete.add_populating(this._onAutoCompletePopulating);
Und Boom, es ist eingestellt.