2011-10-17 13 views
0

ajaxツールキットautocompleteextenderを使用して複数のテキストボックスコントロールにフックする方法があるのだろうかと思います。AjaxツールキットAutoCompleteExtender

私たちは複数のテキストボックスコントロールを持っているので、8つのオートコンプリートエクステンダを使って同じことをするのは賢明ではありません。その8つはすべて正しく初期化する必要があります。

編集:

私はautocompleteextenderオブジェクトを初期化する方法を構築し、そのメソッドに、各オブジェクトを渡すので、私は一つ一つに別々に設定する必要がある唯一のものは、IDとTargetElementIDです。少なくとも何よりも優れていますが、私はまだこれに対するよりよい解決法を理解しています。

答えて

2

質問に固有の答えではありませんが、私はいつもAjax Controlツールキットのオートコンプリートエクステンダーを使用していましたが、私の意見ではJqueryの方がはるかに優れています。それをjQueryの各コントロールに割り当てる必要がありますが、データを取得する関数と結果を処理する関数の2つの関数しか必要としません。

あなたに似た何かをするには、次のとおりです。

$(document).ready(function() { 

    $('#<%=txtSearchBox.ClientID%>').autocomplete('/Search.ashx'); 
    $('#<%=txtSearchBox.ClientID%>').result(function (event, data, formatted) { 
     if (data) { 

      // Extract the data values 
      var name = data[0]; // appears in textbox 
      var dataval1= data[1]; 
      var dataval2= data[2]; 


      $("#<%=hdndataval1.ClientID%>").val(dataval1); 
      $("#<%=hdndataval2 .ClientID%>").val(dataval2); 
     } 
    }); 

}); 

をあなたがIDを保存するために隠しフィールドを使用する必要がありますが、それはうまくハンドラを使用して自動的に補完します。

public void ProcessRequest(HttpContext context) 
    { 
      string prefixText = context.Request.QueryString["q"]; 
      //do your thing here and return as a bar separated list 
      StringBuilder sb = new StringBuilder(); 
      foreach(Results res in results) 
      { 
       sb.Append(String.Format("{0}|{1}|{2}", +res.Val1, res.Val2, res.Val3)); 
       sb.Append(Environment.NewLine); 
      } 
      context.Response.Write(sb.ToString()); 
    } 

jQueryの

私はそのコントロールツールキットによって誓うために使用を認めなければならない(と思う)が、私は私がはるかに優れていると思うのコントロールの負荷を発見したのjQueryに導入されたhereです!

私はあなたの方向に別のオプションを投げたいと思っていました!

+0

ありがとう、私はそれを見て、より現実的な解決策のように感じる、ajaxtoolkitの1つは一見あなたの行動の多くをカスタマイズすることはできません。 –

+0

喜んで助けになる!間違いなくあなたがajaxを使用する必要があるときに利用可能な他のJqueryコントロールを見てください。いくつかの素晴らしいものがあります! – Bex

関連する問題