我正在尝试使用 AjaxToolKit 的 dropdownlistextender 构建一个下拉列表。我有以下标记:
<asp:Label ID="ddTest" runat="server" Text="Transactions" Width="300px" BorderColor="#C0C0C0" CssClass="selecter"/>
<ajaxToolkit:DropDownExtender runat="server" ID="ddeSections"
TargetControlID="ddTest" DropDownControlID="panelItems" HighlightBackColor="Silver"
DropArrowBackColor="white" HighlightBorderColor="Silver"/>
以及“列表”项目的以下内容:
<table runat="server" id="ctlOptions" class="options" cellspacing="2" cellpadding="2" border="1">
<tr><td class="item" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)" onclick="clickIt(this)">Transactions</td></tr>
<tr><td class="item" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)" onclick="clickIt(this)">The second option</td></tr>
<tr><td class="item" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)" onclick="clickIt(this)">The third option</td></tr>
<tr><td class="item" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)" onclick="clickIt(this)">The fourth option</td></tr>
<tr><td class="item" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)" onclick="clickIt(this)">The fifth option</td></tr>
</table>
我的 JavaScript 看起来像这样:
function mouseOver(obj) {
if (obj) obj.className = 'itemOver';
}
function mouseOut(obj) {
if (obj) obj.className = 'item';
}
其中item和itemOver是适当样式的 CSS 类。问题是我希望我的onclick事件在服务器上触发SelectedIndexChanged类型的事件。我试过这个功能:
function clickIt(obj) {
var ddTest = document.getElementById("ctl00_ContentPlaceHolder1_ddTest");
var selVal = '';
if (ddTest) {
selVal = obj.firstChild.nodeValue;
ddTest.firstChild.nodeValue = selVal;
__doPostBack('<%=ddSections.ClientID %>', '');
}
}
ddSections是asp:Dropdown
我试图触发的 OnSelectedIndexChanged 事件。
这会触发页面级回发,但不会触发我想要触发的ddSections_SelectedIndexChanged服务器端方法。顺便说一句,ddSections 将被隐藏。
请你提供一些建议。我花了三天时间试图弄清楚这一点,却空手而归。随意重新格式化以提高可读性。提前致谢。