6

Tôi có một điều khiển máy chủ tùy chỉnh có vẻ hoạt động tốt cho đến khi tôi đặt nó trong UpdatePanel. Một khi bên trong UpdatePanel nó tiếp tục hoạt động tốt nhưng UpdatePanel bây giờ làm đầy đủ postbacks khi kiểm soát máy chủ tùy chỉnh của tôi không postback.Điều khiển máy chủ tùy chỉnh gây ra toàn bộ postbacks bên trong UpdatePanel

Tôi có cần phải làm bất cứ điều gì để kiểm soát máy chủ tùy chỉnh của tôi thực hiện đăng lại không đồng bộ trong khi ở trong UpdatePanel không?

Đây là mã có liên quan đang gây ra một postback đầy đủ. Ecs: Điều khiển máy nhắn tin là điều khiển tùy chỉnh của tôi gây ra postbacks đầy đủ trên sự kiện OnCommand mặc dù nó nằm trong UpdatePanel.

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

Tôi cũng sẽ quan tâm đến câu trả lời này. Tôi có một điều khiển tùy chỉnh mà thực hiện IPostBackDataHandler mà sẽ không làm một phần postback bên trong một UpdatePanel. Phải có một số nước sốt bí mật gây ra một điều khiển để có được đăng ký như là một kích hoạt khi bạn sử dụng tài sản UseChildrenAsTriggers. –

+0

điều gì sẽ xảy ra nếu bạn thêm một kích hoạt rõ ràng trên updatepanel để thực hiện một postback asynch trên sự kiện của customcontrol? – AndreasKnudsen

Trả lời

0

Rất tiếc ... không thể xem phần còn lại của trang.

Bạn cũng có Trình quản lý tập lệnh trên trang của mình không?

+0

Có, xin lỗi mã đã bị cắt vì lý do nào đó. Đã sửa lỗi. ScriptManager hiện diện như một phần của Trang chính. – DarenTx

0

Kiểm soát tùy chỉnh có triển khai INamingContainer và đăng lại từ một điều khiển khác bên trong vùng chứa đặt tên đó không?

Tôi đã tìm thấy ranh giới vùng chứa đặt tên giữa UpdatePanel và điều khiển nguồn có thể gây ra hành vi này.

0

Một lựa chọn có thể là như AndreasKnudsen gợi ý như thêm một AsyncPostBackTrigger vào bảng của bạn

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server"> 
    <ContentTemplate> 
    <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
    <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
    </asp:Repeater> 
    </ContentTemplate> 
    <Triggers> 
    <AsyncPostBackTrigger ControlID="ClosedIssuesPager" EventName="Command" /> 
    </Triggers> 
</asp:UpdatePanel> 

Một lựa chọn khác là để thử thêm ChildrenAsTriggers vào thẻ UpdatePanel bạn

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" ChildrenAsTriggers="true"> 
+1

ChildrenAsTriggers là true theo mặc định, vì vậy việc thêm điều này sẽ không khác biệt. – awe

1

Đặt chế độ cập nhật của bản cập nhật của bạn bảng điều khiển để có điều kiện.

<asp:UpdatePanel ID="ClosedIssuesUpdatePanel" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <ecs:Pager ID="ClosedIssuesPager" OnCommand="ClosedIssuesPager_Command" runat="server" /> 
     <asp:Repeater ID="ClosedIssuesRepeater" runat="server"> 
     .... 
     </asp:Repeater> 
    </ContentTemplate> 
</asp:UpdatePanel> 
1

Bạn không chỉ định loại điều khiển nào đang được sử dụng trong điều khiển tùy chỉnh của mình. Họ là nút hoặc thả xuống hay cái gì khác? Nếu chúng là các nút, bạn cần đảm bảo rằng các thuộc tính UseSubmitBehavior của chúng được đặt thành Sai.

Ngoài ra, bạn sẽ muốn đăng ký kiểm soát của bạn với ScriptManager của trang qua ScriptManager.RegisterAsyncPostBackControl

1

Tôi đã có một vấn đề tương tự và thấy rằng việc thêm các ClientIDMode thuộc tính = "AutoID" vào thẻ điều khiển người dùng của tôi giải quyết vấn đề .

Các vấn đề liên quan