2

我正在使用 asp.net 并HtmlSelect在我的页面上有一个元素(带有runat="server")。通常我只会将 设置DataSource为一些加载的数据和DataBind. 但是在这种情况下,数据具有一个层次结构,我想在 HTML 中用optgroup. 谷歌没有带来任何喜悦——这甚至可能吗?

4

2 回答 2

1

我有一个类似的问题要解决,我就是这样做的。在我继续之前,我确实找到了各种列表的重新压裂方法,这些方法可能确实有效。但是,我认为这不是解决问题的最佳途径。这是我所做的:

我还需要知道用户在下拉列表中选择了哪个选项,但发现您无法在 ASP.net 中使用选项组构建下拉列表。所以要做到这一点,我只是在每个组中构建了一个简单<select><optgroup>'s 和's。<option>然后我放置了一个<div>带有隐藏文本框的runat="server"集合。我"onchange"在选择上设置了事件,以将隐藏文本框的文本值更改为用户使用 javascript 选择的选项值。然后,当回发发生时,后面的代码可以通过隐藏的文本框访问用户选择的值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....
}
于 2011-06-17T14:10:55.097 回答
0

我一直在寻找同样的东西,它看起来不像 ASP 本身支持这个。一次 Google 搜索发现有人在http://www.codeplex.com/SharpPieces推荐了一个库,但我从未使用过它,也不知道它有多好。其他人谈论编写自己的渲染器以支持 optgroup。

于 2011-06-13T23:31:22.913 回答