0

内部にツリービュー コントロールを含む更新パネルを実装しました。ツリービュー コントロールはJavascriptを介してポストバックを引き起こし、OnNodeCheckedがトリガーされます。

これを UpdatePanel コントロールにラップしましたが、まだページに点滅効果があります。また、ページに scriptManager を実装しています。ちらつきを避けるために何ができるか知っている人はいますか?

<asp:UpdatePanel ID="updateTreeViewPanel" runat="server" 
                 ChildrenAsTriggers="true" UpdateMode="Conditional">
   <ContentTemplate>
     <fieldset>
        <asp:TreeView ID="tv_WLG" runat="server"  
                      OnTreeNodeCheckChanged="tv_WLG_TreeNodeCheckChanged" 
                      OnSelectedNodeChanged="tv_WLG_SelectedNodeChanged" 
                      onclick="javascript:postBackByObject(event)"  
                      ShowCheckBoxes="All">
        </asp:TreeView>
    </fieldset>
  </ContentTemplate>
</asp:UpdatePanel>
4

2 に答える 2

0

トリガーを追加することをお勧めします...

<asp:UpdatePanel>
    <ContentTemplate>
        ...your existing code
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="tv_WLG" />
    </Triggers>
</asp:UpdatePanel>

ただし、ターゲットにしているクライアント側のスクリプトは、更新パネルの範囲外で発生する場合があります。代わりに分離コードでクリック イベントを処理してみてください。

于 2013-11-14T13:46:22.897 に答える
0

できることはonload、updatepanel にイベントを追加し、その__doPostback()ように使用してトリガーすることです。その後、クリック イベントが発生するたびに、updatepanel の onload イベントで処理できます。

<asp:UpdatePanel ID="updateTreeViewPanel" runat="server" 
                 ChildrenAsTriggers="true" OnLoad="UpdatePanel_Load" UpdateMode="Conditional">
   <ContentTemplate>
     <fieldset>
        <asp:TreeView ID="tv_WLG" runat="server"  
                      OnTreeNodeCheckChanged="tv_WLG_TreeNodeCheckChanged" 
                      OnSelectedNodeChanged="tv_WLG_SelectedNodeChanged" 
                      onclick="__doPostback('updateTreeViewPanel', '');"  
                      ShowCheckBoxes="All">
        </asp:TreeView>
    </fieldset>
  </ContentTemplate>
</asp:UpdatePanel>

現在のメソッドが機能しない理由は、ポストバック オブジェクトが更新パネルによって処理されるオブジェクトである必要があるためです。doPostback()更新パネルをオブジェクトとして呼び出すと、部分的なポストバックがトリガーされます。

于 2013-11-14T13:58:50.387 に答える