1

onイベントAjax Accordionでコントロールを使用しました。Javaスクリプト内で設定したコントロールのプロパティを設定したいと思います。Master PagePage_LoadSelectedIndexAccordion

私の問題は毎回HiddenField1.Value=""Page_Loadの値が何もないということです。Javaスクリプトで設定した非表示フィールドの値を取得していません。代わりに、何も表示されないか、空の文字列を取得します。

以下は隠しフィールドです

<asp:HiddenField ID="HiddenField1" runat="Server"  />

注:(1)HiddenField私は自分のタスクを完了するために 使用しました。(2)Ajaxアコーディオンがポストバック後に現在のペインを失うため、これを行っています。

<script type="text/javascript">
        function pageLoad()
         {
            $find('<%= UserAccordion.ClientID %>' + '_AccordionExtender').add_selectedIndexChanged(onAccordionPaneChanged); 
        }

       function onAccordionPaneChanged(sender, eventArgs) 
         { 
           var selPane = sender.get_SelectedIndex();
           document.getElementById('<%=HiddenField1.ClientID%>').value = selPane;
           //alert("SelectedIndex:" + selPane  ); This message fires nicely so i have confirmed that this event work
         }
    </script>

以下は.vbファイル内の私のバックエンドコードです

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If HiddenField1.Value = "" Then
        Else

            UserAccordion.SelectedIndex = HiddenField1.Value

        End If
End Sub

編集: アコーディオン制御のコード。

<ajax:Accordion ID="UserAccordion" runat="server" SelectedIndex="0" HeaderCssClass="accordionHeader"
                            HeaderSelectedCssClass="accordionHeaderSelected" ContentCssClass="accordionContent"
                            FadeTransitions="true" SuppressHeaderPostbacks="true" TransitionDuration="250"
                            FramesPerSecond="40" RequireOpenedPane="false" AutoSize="None"  
                            Width="220px" >
                            <Panes >
                                <ajax:AccordionPane ID="AccordionPane1"  runat="server" >
                                    <Header>
                                        <a href="#" class="href">ST-ERP Modules</a></Header>
                                    <Content>
                                        <asp:Panel ID="UserReg" runat="server">
                                            <asp:TreeView runat="server" ID="treeMainMenu" DataSourceID="SiteMapDataSource1"
                                                NodeIndent="10" Width="150px" OnTreeNodeDataBound="treeMainMenu_TreeNodeDataBound">
                                                <ParentNodeStyle Font-Bold="False"></ParentNodeStyle>
                                                <HoverNodeStyle ForeColor="#447BD4" Font-Underline="True"></HoverNodeStyle>
                                                <SelectedNodeStyle HorizontalPadding="0px" ForeColor="#DD5555" VerticalPadding="0px"
                                                    Font-Bold="True" Font-Underline="True"></SelectedNodeStyle>
                                                <NodeStyle NodeSpacing="0px" HorizontalPadding="0px" ForeColor="#447BD4" VerticalPadding="0px"
                                                    Font-Size="8pt" Font-Names="Verdana"></NodeStyle>
                                            </asp:TreeView>
                                        </asp:Panel>
                                    </Content>
                                </ajax:AccordionPane>
                                <ajax:AccordionPane ID="AccordionPane2" runat="server">
                                    <Header>
                                        <a href="#" class="href">User Detail</a></Header>
                                    <Content>
                                        <asp:Panel ID="Panel1" runat="server">
                                            <asp:TreeView runat="server" ID="TreeView1" DataSourceID="SiteMapDataSource2" NodeIndent="10"
                                                Width="150px">
                                                <ParentNodeStyle Font-Bold="False"></ParentNodeStyle>
                                                <HoverNodeStyle ForeColor="white" Font-Underline="True"></HoverNodeStyle>
                                                <SelectedNodeStyle HorizontalPadding="0px" ForeColor="#DD5555" VerticalPadding="0px"
                                                    Font-Bold="True" Font-Underline="True"></SelectedNodeStyle>
                                                <NodeStyle NodeSpacing="0px" HorizontalPadding="0px" ForeColor="White" VerticalPadding="0px"
                                                    Font-Size="8pt" Font-Names="Verdana"></NodeStyle>
                                            </asp:TreeView>
                                        </asp:Panel>
                                    </Content>
                                </ajax:AccordionPane>
                                <ajax:AccordionPane ID="AccordionPane3" runat="server">
                                    <Header>
                                        <a href="#" class="href">Job Details</a>
                                    </Header>
                                    <Content>
                                        <asp:Panel ID="Panel2" runat="server">
                                            ddddddddddddd</asp:Panel>
                                    </Content>
                                </ajax:AccordionPane>
                            </Panes>
                        </ajax:Accordion>
4

3 に答える 3

1

TreeNodeDataBoundツリービューの両方のイベントハンドラーでノードのNavigateUrlプロパティをクリアしてみてください。

protected void treView_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
{
    e.Node.NavigateUrl = null;
}
于 2012-08-20T10:01:52.617 に答える
0

私はこの問題を解決しましたこの投稿の私の答えを参照してください Ajaxアコーディオンは現在のペインを失います

リンクが壊れている場合は以下:

私はQuery String以下のようなリンクを使用してこれを解決します

url="~/Opportunity/Indent.aspx?index=1" // replace 1 with your desired index

ページ読み込みイベントで次のように記述します

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 

        Dim selectedindex As String = Request.QueryString("index")
        UserAccordion.SelectedIndex = selectedindex



    End Sub
于 2012-08-20T13:19:20.940 に答える
0

これをセッション変数(つまり、Accordion.SelectedIndex = Session( "AccordionIndex")を使用して機能させることができましたが、QueryStringも同じように機能します(URLからインデックスを抑制したい場合を除き、セッション状態の方が適切に機能します)。

于 2014-01-02T19:47:11.310 に答える