我在一个页面上有九个可折叠面板。我可以从后面的 jQuery 或 C# 代码展开或折叠它们。在我破坏某些东西之前一切正常,现在 $find(cpe) 为九个中的两个返回 null。
面板已定义且对 C# 可见,但它们在 DOM (Firebug) 中的 outerHTML 设置表明存在问题:
这些工作:
<input name="ctl00$body$cpOutsideSales_ClientState" id="ctl00_body_cpOutsideSales_ClientState" value="true" type="hidden">
<input name="ctl00$body$cpGeneral_ClientState" id="ctl00_body_cpGeneral_ClientState" value="false" type="hidden">
这些不起作用:
<input name="ctl00$body$cpDuties_ClientState" id="ctl00_body_cpDuties_ClientState" type="hidden">
<input name="ctl00$body$cpAnalyst_ClientState" id="ctl00_body_cpAnalyst_ClientState" type="hidden">
问题是缺少“value ='true'”,但我看不到设置它的明显方法。这是一个有效的声明:
<asp:CollapsiblePanelExtender ID="cpGeneral" runat="server"
TargetControlID="pnlGeneral"
BehaviorID="cpGeneral"
TextLabelID="lblGeneral"
SuppressPostBack="true"
Collapsed="true"
ImageControlID="icnGeneral"
ExpandControlID="pnlGeneralcp"
CollapseControlID="pnlGeneralcp"
ExpandedText="Collapse"
CollapsedText="<b>Position/Organization</b>">
</asp:CollapsiblePanelExtender>
一个没有:
<asp:CollapsiblePanelExtender ID="cpDuties" runat="server"
TargetControlID="pnlDuties"
BehaviorID="cpDuties"
TextLabelID="lblDuties"
SuppressPostBack="true"
Collapsed="true"
ImageControlID="icnDuties"
ExpandControlID="pnlDutiescp"
CollapseControlID="pnlDutiescp"
ExpandedText="Collapse"
CollapsedText="<b>Duties</b>">
</asp:CollapsiblePanelExtender>
我尝试在 C# 中设置 ClientState,代码执行,但 jQuery 代码仍然找不到控件。IE 这在 pn="cpGeneral" 时有效,但在 pn="cpDuties' 时失败:
function addPanelHandler(panel, pn) {
extender = $find(pn);
if (extender != null) {
extender.add_expanded(function () {
loadPanel(panel, pn);
});
}
}
这是来自 FireBug 的图像。请注意,九个中的两个缺少“真实”: