كيف يمكنني الحصول على الإكمال التلقائي التحكم في الجانب النصي مع برنامج نصي التحكم (ASP.Net)

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

سؤال

المشكلة كيف يمكنني التقاط وتعيين الأحداث على Ajax Toolkit الإكمال التلقائي التحكم باستخدام برنامج نصي السيطرة على السيناريو الملف ؟

تفسير

أنا خلقت أساسا سيناريو السيطرة على الجمع بين النص و الإكمال التلقائي التحكم بحيث يمكن أن يكون العامل عامة السيطرة على "الإكمال التلقائي".والخطوة التالية هي لإضافة أشياء مثل معالجة الصورة في حين أنها تبحث عن البنود.يبدو من السهل بما فيه الكفاية.

protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{  
  ScriptControlDescriptor desc = new ScriptControlDescriptor   
     ("NDI.WebControls.Client.GenericAutoComplete", this.ClientID);
  desc.AddProperty("autoCompleteID", autoComplete.ClientID);

  return new ScriptDescriptor[] { desc };
}

ثم على جافا سكريبت العادي:

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');
},

الآن هذا يجب أن تعمل ولكن لا.لماذا ؟ لأنه على ما يبدو لا يوجد الإكمال التلقائي التحكم في المقدمة صفحة الطبيعي السيطرة.حتى عندما يحصل على مبلغ الحصول على جزء من أنها تأتي فارغة على الرغم من الخاصية معرف وجود الخاصية text.(أي لا توجد)

هل هذا ممكن أن تفعل أو لا بد من استخدام OnXyz خصائص الملقم تعيين الأسلوب ؟ كما في:

  autocomplete.OnClientPoplating = someScript;
هل كانت مفيدة؟

المحلول

الجواب

بويا وجدت.تبين الإكمال التلقائي قد بنيت في طريقة الوصول إليه الأحداث في جافا سكريبت:

من جانب الخادم لديك لتعيين BehaviorID:

autoComplete.BehaviorID = "autoCompleteBehavior";

ثم وضعه في GetScriptDescriptors الطريقة:

protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
  ScriptControlDescriptor desc = new 
   ScriptControlDescriptor("NDI.WebControls.Client.GenericAutoComplete", ClientID);
   desc.AddProperty("autoCompleteID", autoComplete.BehaviorID);

  return new ScriptDescriptor[] { desc };
}

بالطبع لديك لإضافة خصائص الجانب النصي لالتقاط تلك القيمة ، و بمجرد القيام بذلك يجب عليك استخدام تجد للحصول عليه.ثم يجب عليك إنشاء معالج الحدث:

this._autoComplete = $find(this._autoCompleteID);
this._onAutoCompletePopulating = 
   Function.createDelegate(this, this.handleOnAutoCompletePopulating);

وأخيرا استخدام المدمج في الحدث اضع في الإكمال التلقائي التحكم (سلوك الكائن):

this._autoComplete.add_populating(this._onAutoCompletePopulating);

وازدهار ، ضبطه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top