2011-01-14 8 views
2

私はasp.netを使用しており、HtmlSelect要素をrunat="server"としています。通常、私はDataSourceをロードしたデータとDataBindに設定します。しかしこの場合、データには1階層の階層があり、これをHTMLでoptgroupと表現したいと思います。 Googleはこれまでどんな喜びも思いつきませんでした。これは可能ですか?データバインディングを使用してasp.netのoptgroup要素でHtmlSelectを設定する

答えて

0

私は同じことを考えていましたが、ASPがこれをネイティブにサポートしているようには見えません。 1つのGoogle検索で、http://www.codeplex.com/SharpPiecesにライブラリを推薦している人が見つかりましたが、私はそれを使ったことがないので、どれくらい良いのか分かりません。 optgroupサポートのためにあなた自身のレンダラを書くことについて他の人が話します。

1

私は解決するために同様の問題を抱えていました。これが私のやり方です。私が続行する前に、おそらくうまくいく、リストのためのあらゆる種類の再破砕法を見つけました。しかし、私はこれが私の解決のために行く最善のルートだとは思わなかった。

また、ユーザーがドロップダウンリストで選択したオプションを知る必要がありましたが、ASP.netのオプショングループでドロップダウンリストを作成できないことがわかりました。だからこれを行うには、単純に<select><optgroup>で、<option>を各グループに作りました。次に、を設定した隠しテキストボックスを<div>に配置しました。私は"onchange"イベントを選択して、隠しテキストボックスのテキスト値を、javascriptを使用してユーザーが選択したオプションの値に変更するように設定しました。次に、ポストバックが発生したとき、コードビハインドは、ユーザーが選択した値に、隠しテキストボックスrunat="server"を介してアクセスしました。問題が解決しました!背後にあるコード(C#の)で

<div id="selectDiv"> 
    <select id="selectItems" onchange="document.getElementById('hiddenselectDiv').getElementsByTagName('input')[0].value = this.options[this.selectedIndex].value;"> 
     <optgroup label="Johannesburg"> 
      <option value="Wilropark">Wilropark</option> 
      <option value="Bryanpark">Bryanpark</option> 
      <option value="Hurlingham">Hurlingham</option> 
      <option value="Midrand ">Midrand </option> 
      <option value="Glenvista">Glenvista</option> 
      <option value="Sunninghill">Sunninghill</option> 
      <option value="Edenvale ">Edenvale </option> 
      <option value="Parkhurst">Parkhurst</option> 
     </optgroup> 
     <optgroup label="Cape Town"> 
      <option value="Tokai">Tokai</option> 
      <option value="Durbanville">Durbanville</option> 
     </optgroup> 
     <optgroup label="Durban"> 
      <option value="Musgrave">Musgrave</option> 
     </optgroup> 
     <optgroup label="Pretoria"> 
      <option value="Hatfield">Hatfield</option> 
     </optgroup> 
    </select> 
</div> 
<div id="hiddenSelectDiv"> 
    <!-- 
    Note: You probably want to set the hidden value to the first item you have seleced when you build the <select> object. 
    --> 
    <input type="hidden" id="selectedItem" value="Wilropark"> 
</div> 

:HTML(ASPX)に

コード:コードは次のようになります

if (!string.IsNullOrEmpty(selectedItem.Value)) 
{ 
    //validation or whatever you want.... 
} 
+0

これにはJavaScriptが無効になっているクライアントに失敗します。私はブラウザの標準的な振る舞いを、JavaScriptを使って私のサーバ側のフレームワークで見落としを回避するよりも好むでしょう。たとえテキスト連結による選択のためのHTMLを生成し、Request.Form ["control_name "] ... – vitch

関連する問題