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向更新面板添加一个事件并__doPostback()像这样触发它。然后,每当单击事件触发时,您都可以在更新面板的 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 回答