1ページに9つの折りたたみ可能なパネルがあります。jQueryまたはC#コードビハインドのいずれかからそれらを展開または折りたたむことができます。私が何かを壊すまではすべて正常に機能していましたが、$ find(cpe)は9つのうち2つに対して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からの画像です。9つのうち2つから「真」が欠落していることに注意してください。