ASP更新面板

时间:2013-11-14 13:35:02

标签: asp.net

我使用树视图控件实现了更新面板。树视图控件将通过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>

2 个答案:

答案 0 :(得分:0)

我建议添加一个触发器......

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

您定位的客户端脚本可能会出现在更新面板的范围之外。您可以尝试在代码隐藏中处理单击事件。

答案 1 :(得分:0)

您可以执行的操作是向updatepanel添加onload事件,并使用__doPostback()触发该事件。然后,只要click事件触发,您就可以在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()将触发部分回发。