2009-01-20 42 views
7

Tôi có điều khiển .NET repeaterdata-bound vào Danh sách. Là một phần của Repeater's Item Collection, tôi có một "Remove Button" có hiệu quả loại bỏ phần tử List hiện tại này.Cách tự động làm mới điều khiển bộ lặp lại dữ liệu .NET

Tác phẩm này, ở mã sau tôi có thể xóa thành công một mục từ datasource của Repeater.

Vấn đề của tôi là thế này : khi tôi thiết lập lại các cập nhật datasource và gọi MyRepeater.DataBind() một lần nữa, giao diện Repeater không làm mới với các mục gỡ bỏ.

Tôi đang tìm sự kiện để vẽ lại hoặc làm mới Repeater dựa trên Danh sách được cập nhật. Cảm ơn mọi con trỏ hoặc ví dụ.

Trả lời

4

Bạn cần phải gọi phương thức 'DataBind' trên nguồn dữ liệu của bạn, sau đó gọi 'DataBind' trên Repeater control của bạn.

+0

Làm thế nào bạn có thể gọi 'DataBind' từ nguồn nếu, như trong trường hợp này, nguồn là 'Danh sách'? –

1

Bạn có đang cho nguồn dữ liệu được làm mới không?

Nếu bạn đang thiết lập nguồn dữ liệu trong mã sau, bạn cần đặt nguồn dữ liệu đó bằng dữ liệu được làm mới, sau đó gọi phương thức DataBind.

+0

Có. Tôi đang làm mới nguồn dữ liệu và ngay lập tức gọi phương thức DataBind. –

+0

Hmm ... Có thể bạn có thể đăng một số mã của mình. –

0

Buộc Databind thường được thực hiện khi DataBind tự động được thực hiện trong sự kiện PreRender.

Thông thường nếu bạn đã thực hiện thao tác xóa trong sự kiện nhấp, trình lặp lại sẽ tự làm mới vì tự động trong preRender, các điều khiển trên trang là DataBind(). Đây là những gì tài liệu của microsoft nói:

PreRender: Trước khi sự kiện này xảy ra, mỗi dữ liệu bị ràng buộc kiểm soát mà thuộc tính DataSourceID được đặt gọi phương thức DataBind của nó.

source

Vì vậy, có thể là bạn bị ảnh hưởng Youritem.DataSource = List, nhưng MS đề nghị làm YourItem.DataSourceID = List.ID, hoặc một cái gì đó như thế.

Hy vọng nó giúp

0

Tôi đã có một tình huống tương tự ... một bộ lặp liên kết với một xmlDataSource, cả bên trong UpdatePanel. Tôi muốn cho phép người dùng nhập một tên tại một thời điểm, sau đó nhấp vào nút "Thêm" để cập nhật danh sách trong bộ lặp.

Tôi đặt "EnableViewState" thành False trên bộ lặp và xmlDataSource và đặt "EnableCaching" trên xmlDataSource thành False. Tôi đặt thuộc tính Data của xmlDataSource, được gọi là DataBind cho xmlDataSource, đặt thuộc tính DataSourceID của bộ lặp, sau đó được gọi là DataBind cho bộ lặp. Có lẽ đó là quá mức cần thiết ... nhưng nó hoạt động. Có thể điều này sẽ giúp.

CẬP NHẬT: Tôi thấy rằng bằng cách đặt EnableViewState thành False trên điều khiển lặp lại, sự kiện ItemCommand của tôi sẽ không kích hoạt. Nhưng tôi nghĩ bạn chỉ cần đặt EnableViewState/EnableCaching thành False cho nguồn dữ liệu ... Tôi đã trả về cài đặt EnableViewState thành True cho bộ lặp và bây giờ tất cả đều có vẻ tốt.

1

Tôi chạy vào một cái gì đó như thế với một điều khiển lặp lại và một nguồn DataTable.

Không có phương thức làm mới trong DataTable, nhưng gọi DataTable.EnableDynamicData (typeof (DataTable)) khi tải trang ban đầu đã giải quyết được sự cố.

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