2009-10-06 45 views
6

Tôi dường như không có vấn đề gì với họ.Bạn sử dụng UpdatePanel như thế nào? (asp.net)

Tôi có bảng cập nhật với một số hộp kiểm. Tôi kiểm tra và nhấn vào nút Lưu của tôi, nhưng nó khiến bảng cập nhật đăng lại (làm mới) và đặt tất cả trở lại trống. Phương pháp vẽ lại chạy trước mã nút.

Cách chính xác để có bảng cập nhật bằng hộp kiểm mà bạn có thể thao tác là gì?

Chỉnh sửa: Tôi nghĩ vấn đề có thể là vấn đề thiết kế cơ bản. Tôi thực sự cần một hướng dẫn đầy đủ về cách sử dụng updatepanel đúng cách.

+0

Tôi nghĩ bảng cập nhật được sử dụng để cập nhật nội dung trong bảng đó thay vì tải lại toàn bộ trang e ... –

Trả lời

10

Ví dụ mã:

<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="updatePanel1"> 
    <ContentTemplate> 
     <asp:CheckBox runat="server" ID="myCheckBox" Caption="CheckBox"/> 
     <asp:Button runat="server" ID="saveButton" 
        Caption="Save" OnClick="SaveButtonClick"/> 
    </ContentTemplate>  
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="saveButton" EventName="Click" />   
    </Triggers> 
</asp:UpdatePanel> 

Hãy chắc chắn rằng:

  1. UpdateMode của UpdatePanel là Conditional
  2. SaveButton chứa trong Triggers phần như ControlID của AsyncPostBackTrigger
+0

Tôi nghĩ rằng điều kiện có thể gây ra nó. Tôi nghĩ tôi có thể giải quyết nó ngay bây giờ, cảm ơn. – NibblyPig

+0

Lỗi thời gian chạy Microsoft JScript: Sys.WebForms.PageRequestManagerServerErrorException: Postback hoặc đối số gọi lại không hợp lệ. Xác thực sự kiện được bật bằng cách sử dụng trong cấu hình hoặc <% @ Page EnableEventValidation = "true"%> trong một trang.Vì mục đích bảo mật, tính năng này xác minh rằng các đối số cho các sự kiện postback hoặc gọi lại bắt nguồn từ điều khiển máy chủ ban đầu được hiển thị. Nếu dữ liệu hợp lệ và được mong đợi, hãy sử dụng phương thức ClientScriptManager.RegisterForEventValidation để đăng ký dữ liệu đăng lại hoặc gọi lại để xác thực. – NibblyPig

+0

Hmm ... Điều này rất lạ. Bạn có thể viết mô tả về ScriptManager của mình không? – AndreyAkinshin

2

Đảm bảo nút Lưu nằm bên trong Bảng cập nhật, để bắt đầu và nếu không, nút này được chỉ định làm Trình kích hoạt cho Bảng cập nhật, trong mục <Triggers> của Bảng điều khiển.

<asp:UpdatePanel ID="MyControlPanel" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="SaveButton" /> 
    </Triggers> 
    <ContentTemplate> ... 

Bạn có thể hiển thị một số mã cho UpdatePanel của mình không?

3

mã của bạn nên trông giống như

if(!page.ispostback) 
{ 
    re-drawing(); 
} 

Như khi bạn nhấn nút Save phương pháp của bạn lại vẽ() được gọi và nó một lần nữa làm mới hộp kiểm của bạn. Asynchronous postback cư xử và nhấn phương pháp cùng một trang như postback đầy đủ nhưng làm mới giá trị trong UpdatePanels

Ngoài ra kiểm tra URL http://ajax.net-tutorials.com/controls/updatepanel-control/

+0

Điều đó có ý nghĩa, nhưng có vẻ như tự động xóa bảng điều khiển. Nếu tôi đặt "if (condition) return;" là dòng đầu tiên của phương thức tải lên bảng cập nhật của tôi, nó kết thúc bằng cách xóa nó. – NibblyPig

+0

hiển thị mã ur ..... –

0

này Nếu bạn sử dụng máy chủ điều khiển để làm cho hộp kiểm bạn nên thêm EnableViewState="true" thuộc tính để các điều khiển và cập nhật bảng .

Nếu bạn có các hộp kiểm không phải là điều khiển máy chủ, hãy xóa chúng khỏi bảng cập nhật, chỉ bao gồm các điều khiển máy chủ bên trong. Điều này dẫn đến việc giữ một số bảng cập nhật trên một trang thường không phải là vấn đề lớn.

0

Thêm đối tượng ScriptManager vào trang của bạn nếu bạn không có. Đặt EnablePartialRendering = "true". Đặt UpdatePanel của bạn bất cứ nơi nào khác trên trang và đặt nội dung bạn muốn ajaxified trong một thẻ trong UpdatePanel của bạn.

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