私はasp.netを使用しておりHtmlSelect
、ページに要素があります( runat="server"
)。通常DataSource
、ロードされたデータと に を設定するだけDataBind
です。ただし、この場合、データには 1 レベルの階層があり、これを HTML でoptgroup
. Google は何の喜びも思いつきませんでした。これは可能なのでしょうか?
2 に答える
同様の問題を解決する必要がありましたが、これが私がやった方法です。続行する前に、おそらく機能するリストのあらゆる種類の再分割方法を見つけました。ただし、これが私の解決策に最適な方法だとは思いませんでした。これが私がしたことです:
また、ユーザーがドロップダウン リストでどのオプションを選択したかを知る必要がありましたが、ASP.net ではオプション グループを使用してドロップダウン リストを作成できないことがわかりました。これを行うために、各グループにと<select>
を使用して単純なものを作成しました。次に、セットを含む非表示のテキストボックスを配置しました。選択時にイベントを設定して、非表示のテキストボックスのテキスト値を、JavaScriptを使用してユーザーが選択したオプションの値に変更します。次に、ポストバックが発生すると、コード ビハインドは非表示のテキスト ボックスを介して、ユーザーが選択した値にアクセスできました。問題が解決しました!コードは次のようになります。<optgroup>
<option>
<div>
runat="server"
"onchange"
runat="server"
HTML のコード (aspx):
<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>
コードビハインド (C#):
if (!string.IsNullOrEmpty(selectedItem.Value))
{
//validation or whatever you want....
}
私は同じことを探していましたが、ASP がこれをネイティブにサポートしているようには見えません。ある Google 検索で、誰かがhttp://www.codeplex.com/SharpPiecesでライブラリを推奨しているのを見つけましたが、私はそれを使用したことがなく、それがどれほど優れているかわかりません。他の人は、optgroup をサポートするために独自のレンダラーを作成することについて話しています。