2013-11-14 183 views
0

我實施了一個更新面板樹視圖控件內。樹視圖控件將導致通過Javascript回發,導致OnNodeChecked被觸發。ASP更新面板

我已經把它包裝在一個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> 
+0

你爲什麼要用javascript而不是代碼隱藏來處理點擊事件?我懷疑這可能是問題。 – tintyethan

+0

@Enghan,js發出一個回傳,後面的代碼被觸發。 TreeviewControl中的哪個屬性應該設置爲觸發代碼? – jpavlov

+0

你只是觸發一個隨機回發或你真的想要發生什麼? – Smeegs

回答

0

我會建議增加一個觸發...

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

你的目標,不過更新面板的範圍之內,可能會出現客戶端腳本。您可以嘗試在代碼隱藏中處理您的點擊事件。

+0

不會'ChildrenAsTriggers =「true」'不需要顯式觸發器? – Abhitalks

+0

是的,我錯過了。 – tintyethan

+0

剝離出ChildrenAsTriggers後仍然會得到回傳。 – jpavlov

0

您可以做的是將一個onload事件添加到更新面板並使用__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()作爲對象將觸發部分回發。