2017-01-09 29 views
2

私はasp.netのWebサイトでautocompleteextenderを使用しています。それは正常に動作しています。autocoompleteextenderの同じ行の異なる列から2つの異なる値を表示

ここエブリーキーワードは2列目のfullformので、私は次のように表示するデータを必要しているなどPNQ、PAR、PBCを - ユーザーが、それは

が、私はテキストボックス 結果にPを入力すると仮定の下のような提案を示していたとき、私は追加機能が欲しいですこの

PNQ(プネ空港)

この値は、ユーザが選択し得るのみテキストボックス全体のない値すなわちPNQ(プネ空港)でPNQを選択する必要があります。これは、ユーザーが選択していることを明確にしなければならないためです。誰もがこれで私を助けることができますか?

<asp:AutoCompleteExtender ServiceMethod="SearchClientCode" 
ServicePath="~/myadmin/shipments-profile.aspx" MinimumPrefixLength="1" 
OnClientShown="resetPosition" CompletionInterval="100" EnableCaching="false" 
CompletionSetCount="10" TargetControlID="clientCode" ID="clientCodeExtender" 
runat="server" FirstRowSelected="false" CompletionListCssClass="completionList" 
CompletionListItemCssClass="listItem" 
CompletionListHighlightedItemCssClass="itemHighlighted"></asp:AutoCompleteExtender> 


[System.Web.Script.Services.ScriptMethod(), System.Web.Services.WebMethod()] 
public static List<string> SearchClientCode(string prefixText, int count) 
{ 
    MySqlConnection conn = new MySqlConnection(); 
    conn.ConnectionString = ConfigurationManager.ConnectionStrings("conio").ConnectionString; 
    MySqlCommand cmd = new MySqlCommand(); 
    cmd.CommandText = "SELECT clientID, clientName FROM clientsDetails where (clientID like @SearchText)"; 
    cmd.Parameters.AddWithValue("@SearchText", prefixText + "%"); 
    cmd.Connection = conn; 
    conn.Open(); 
    List<string> customers = new List<string>(); 
    MySqlDataReader sdr = cmd.ExecuteReader; 
    while (sdr.Read) { 
     customers.Add(sdr("clientID").ToString); 
    } 
    conn.Close(); 
    return customers; 
} 

答えて

1
あなたの要件を達成するためにWebMethod属性にいくつかのクライアント側の機能と変更を追加する必要が

HTML:

をOnClientPopulated 2つのイベントがフックアップをOnClientItemSelectedとBehaviorIDを設定制御するには

<asp:AutoCompleteExtender ServiceMethod="SearchClientCode" ServicePath="~/myadmin/shipments-profile.aspx" MinimumPrefixLength="1" OnClientShown="resetPosition" CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" TargetControlID="clientCode" ID="clientCodeExtender" runat="server" FirstRowSelected="false" CompletionListCssClass="completionList" CompletionListItemCssClass="listItem" CompletionListHighlightedItemCssClass="itemHighlighted" OnClientPopulated="onClientPopulated" OnClientItemSelected="itemSelected" BehaviorID="AutoCompleteEx"></asp:AutoCompleteExtender> 

Javascriptを

<script type="text/javascript"> 
    function itemSelected(ev) 
    { 
    var index=$find("AutoCompleteEx")._selectIndex; 
    if(index!=-1) { 
    $find("AutoCompleteEx").get_element().value =$find("AutoCompleteEx").get_completionList().childNodes[index]._value; 
    } 
else{ 
    $find("AutoCompleteEx").get_element().value = ''; 
} 
} 

function onClientPopulated(sender,e) 
{ 
    var List=$find("AutoCompleteEx").get_completionList(); 
    for(i=0;i<List.childNodes.length;i++) 
    { 
    var _value=JSON.parse(List.childNodes[i]._value); 
    var abbr=_value[0]; 
    var fullform =_value[1]; 
    List.childNodes[i]._value=abbr; 
    List.childNodes[i].innerHTML="<span>"+ abbr + "("+fullform+")</span>" 
    } }</script> 

WebMethod属性:

[System.Web.Script.Services.ScriptMethod(), System.Web.Services.WebMethod()] 
public static List<string> SearchClientCode(string prefixText, int count) 
{ 
    MySqlConnection conn = new MySqlConnection(); 
    conn.ConnectionString = ConfigurationManager.ConnectionStrings("conio").ConnectionString; 
MySqlCommand cmd = new MySqlCommand(); 
cmd.CommandText = "SELECT clientID, clientName FROM clientsDetails where (clientID like @SearchText)"; 
cmd.Parameters.AddWithValue("@SearchText", prefixText + "%"); 
cmd.Connection = conn; 
conn.Open(); 
List<string> customers = new List<string>(); 
MySqlDataReader sdr = cmd.ExecuteReader; 
JavaScriptSerializer serializer = new JavaScriptSerializer(); 
while (sdr.Read) { 
    object[] item = new object[] { sdr("clientID").ToString(), sdr("clientName").ToString() }; 
    customers.Add(serializer.Serialize(item)); 
} 
conn.Close(); 
return customers;} 

それが役に立てば幸い!

+0

ユーザーが任意の値を選択すると、文字列全体ではなくIDのみを取得する必要があります。それはまだ解決していない私の主な問題 – SUN

+0

@SUN ID値を選択するitemSelected関数を更新しました。 –

+0

をチェックしてください。アイテムを選択しているときに、この "["開いた角括弧 – SUN

関連する問題