Wie kann ich die automatische Vervollständigung Kontrollskript Seite Setzen Sie sich mit einem Script-Steuerung (ASP.Net)

StackOverflow https://stackoverflow.com/questions/346632

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;
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top