-1

我在一个页面上有九个可折叠面板。我可以从后面的 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 的图像。请注意,九个中的两个缺少“真实”: 在此处输入图像描述

4

2 回答 2

0

我看不出这两个不应该工作的理由。我相信它与输入/数据有关。
但因为它是一个快速检查:
1)尝试另一个浏览器。还有一个。
如果它们的行为方式都相同:
2) 确保 addPanelHandler 的输入完全正确。如果他们是 - 找人来消除输入和问题。
3)如果您仍然有问题:暂时放弃aspnet并将代码复制/粘贴到HTML中并提取代码。恕我直言:摆脱服务器加快了调试周转。


于 2012-10-22T18:30:22.130 回答
-1

对于造成这种情况的原因,我从来没有给出明确的答案,但是通过仔细地重新创建控件,我创建了另一个可以工作的控件,并逐渐将功能从坏控件转移到好的控件。我能够将它与控件声明中的某些内容隔离开来,但这与我得到的一样接近。

于 2012-10-29T22:13:22.780 回答