저는 몇 시간 동안이 문제에 맞서고 있으며 해결책을 찾지는 못합니다.UserControl이 UpdatePanel에서 전체 포스트 백을 야기 함
문제 : 내 마스터 페이지에 UpdatePanel
수가 거의 없습니다. 그리고 나서 노드에 클릭 할 때마다 부분 포스트 백이 발생해야하는 페이지에 RadTreeView
컨트롤이 있습니다. 모든 것이 잘 작동합니다.
다른 페이지에서 동일한 트리를 사용하고 있으므로이 기능을 UserControl
으로 옮겼습니다. 나 한테 해본 일이야, 아무 문제 없어. 일부 코드를 ascx
으로 이동하여 일부 이벤트가 작성되었습니다. 모든 것이 항상 나를 위해 잘 돌아갔다. 그러나 지금은 아닙니다.
RadTreeView
은 UserControl
내에 중첩 및 업데이트 패널 마스터 페이지에서이 컨트롤은 아래를 참조한다 :
<asp:Panel ID="pnlContentWrapper" runat="server" CssClass="ContentWrapper">
<div id="HeaderBreadCrumb">
<asp:ContentPlaceHolder ID="HeaderBreadCrumbContent" runat="server" />
</div>
<div id="HeaderMenu">
<asp:UpdatePanel ID="upnlTreeMenu" runat="server">
<ContentTemplate>
<asp:ContentPlaceHolder ID="HeaderMenuContent" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="treeProductTree" />
</Triggers>
</asp:UpdatePanel>
</div>
<div id="TreeDiv">
<fp:ProductTree ID="treeProductTree" runat="server" />
</div>
<asp:Panel ID="ContentDiv" ClientIDMode="Static" runat="server">
<asp:UpdatePanel ID="upnlTreeContent" runat="server">
<ContentTemplate>
<asp:ContentPlaceHolder ID="TreePageContent" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="treeProductTree" />
</Triggers>
</asp:UpdatePanel>
</asp:Panel>
</asp:Panel>
을 그리고 사용자 컨트롤은 정말 간단하다 :
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="ProductTree.ascx.vb"
Inherits="ProductTree" %>
<div>
<telerik:RadTreeView ID="treeProductTree" ClientIDMode="Static" runat="server" EnableDragAndDrop="false"
SkinID="CustomSkin" CssClass="MasterProductTree" DataFieldID="NodeId" DataFieldParentID="NodeParentId"
DataTextField="NodeName" DataValueField="NodeId" />
</div>
그리고 뒤에 몇 가지 코드 :
수입품 Telerik.Web.UI
Public Class ProductTree
Inherits System.Web.UI.UserControl
Public Event NodeExpand As EventHandler(Of ProductTreeNodeExpandEventArgs)
Public Event SelectedNodeChange As EventHandler
Protected Sub ProductTree_NodeExpand(ByVal sender As Object, ByVal e As RadTreeNodeEventArgs) _
Handles treeProductTree.NodeExpand
Dim nodeId As Integer = CInt(e.Node.Value)
Dim evetArgs = New ProductTreeNodeExpandEventArgs(nodeId)
RaiseEvent NodeExpand(Me, evetArgs)
//'some logic
End Sub
Protected Sub ProductTree_OnNodeClick(ByVal sender As Object, ByVal e As RadTreeNodeEventArgs) _
Handles treeProductTree.NodeClick
RaiseEvent SelectedNodeChange(Me, New System.EventArgs())
End Sub
End Class
내가 알지 못하는 이유는 부분적이 아닌 전체 포스트 백이 원인입니까? 나는 그게 내 SelectedNodeChange
에 대한 제기와 관련이있을 수 있습니다 용의자,하지만 어떻게 다른 방식으로 처리할지 모르겠다. 다른 구성 요소에 노드 선택이 변경되었음을 알릴 필요가 있습니다. UpdatePanel
s에서 작동하도록하려면 어떻게 향상시킬 수 있습니까?
고마워요! 나는 뭔가를 놓쳤다는 것을 알았지 만, 이것이 나를 도왔다. – Pako
물론 ... 또 다른 옵션은 UserControl에서'IPostBackEventHandler' 인터페이스를 구현 한 다음 이벤트를 버블 링하는 것입니다. 내 머리 꼭대기에서 세부 사항을 정확하게 알 수는 없지만 깨끗하게 유지하려면 그럴 수 없습니다. –