2011-10-07 20 views
8

Tôi vừa mới bắt đầu sử dụng ASP.Net và RadGrid Telerik nhưng đã chạy vào một vấn đề:Telerik RadGrid Paging - Duplicate hồ sơ và các nút gắn bó

đối tượng RadGrid của tôi là trong một đối tượng UserControl trong đối tượng Custom Control trong vòng một Đối tượng trang (có trình quản lý tập lệnh).

Tôi có một vài UserControls trong nói Custom Control, mỗi chứa đánh dấu cho một đối tượng RadGrid như sau:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AreaListRadGrid.ascx.cs" Inherits="WebControls.AreaListRadGrid" %> 
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" assembly="Telerik.Web.UI" %> 

<telerik:RadAjaxPanel runat="server" ID="radAjaxPanel" 
      EnableAJAX="true" LoadingPanelID="radAjaxLoadingPanel"> 
    <telerik:RadGrid AllowPaging="true" AutoGenerateColumns="false" DataSourceID="gridData" EnableViewState="true" GridLines="None" ID="radGrid" runat="server"> 
     <PagerStyle Mode="NumericPages" /> 
     <MasterTableView> 
      <Columns> 
       <telerik:GridBoundColumn DataField="ColA" HeaderText="A" /> 
       <telerik:GridBoundColumn DataField="ColB" HeaderText="B" /> 
       <telerik:GridBoundColumn DataField="ColC" HeaderText="C" /> 
       <telerik:GridBoundColumn DataField="ColD" HeaderText="D" /> 
       <telerik:GridBoundColumn DataField="ColE" HeaderText="E" /> 
      </Columns> 
     </MasterTableView> 
    </telerik:RadGrid> 
</telerik:RadAjaxPanel> 

<asp:ObjectDataSource ID="gridData" runat="server" 
         SelectMethod="GetData" 
         SelectCountMethod="GetDataCount" 
         OnObjectCreating="dataObjectCreating" 
         TypeName="AreaListRadGrid"> 
</asp:ObjectDataSource> 

<telerik:RadAjaxLoadingPanel runat="server" ID="radAjaxLoadingPanel"> 
     Loading please wait.... 
</telerik:RadAjaxLoadingPanel> 

Tôi đã thay đổi tên của cột và không gian tên cho một cái gì đó không phải là dự án cụ thể, nhưng tải lưới.

Vì nó là trong một Custom Control, nó được khởi tạo như sau:

var view = (AreaListRadGrid)this.TemplateControl.LoadControl(".\\WebControls\\AreaListRadGrid.ascx"); 
view.DataSource = dataSet; 
areaCenterMiddle.Controls.Add(view); 
view.RadGrid.Rebind(); 

biến dataSet là loại System.Data.DataSet.

Vì vậy, khi tôi chạy trang web này, Lưới Rad xuất hiện. Tôi có một mạng lưới với 4 hàng, 3 trong số đó là trên trang 1 và hàng cuối cùng là trên trang 2. initial radgrid after page 2 click Khi tôi nhấp vào trang 2, mọi thứ diễn ra như mong đợi. Kiểu dáng cho các nút trang thay đổi và các hàng từ trang 1 bị xóa, với hàng từ trang 2 được thêm vào lưới. Tuyệt quá! Điều tiếp theo là những gì tôi không hiểu:

Khi trang 1 được nhấp một lần nữa, kiểu dáng cho nút trang 2 không thay đổi (vì vậy nó vẫn như thể nó được nhấp) và các hàng 2 và 3 xuất hiện trên lưới, nhưng hàng đầu tiên là hàng đó là trên trang 2.

re-visit to page 1

nó có vẻ như thể trang 2 không được bù trừ khi trang 1 được nạp, tôi không chắc chắn lý do tại sao hoặc làm thế nào đây là, Tuy nhiên. Bất cứ ai có bất kỳ ý tưởng cho những gì tôi đang làm không chính xác?

Thực sự đánh giá cao sự trợ giúp của bạn.

Chúc mừng,

Rob

+1

Thực sự đặt cùng câu hỏi. Đây là cách câu hỏi nên được. –

+0

Bất kỳ khả năng đăng tải lên kiểm soát chính nó? Tôi bắt đầu thiết lập một dự án để khắc phục sự cố, nhưng nhận ra không có cách nào để nếu tôi không thể khởi tạo đối tượng. – KreepN

+0

Bạn gặp sự cố này trong tất cả trình duyệt hoặc chỉ trong bất kỳ trình duyệt cụ thể nào? –

Trả lời

1

tôi chắc chắn rằng bạn đã có này đã tìm ra bởi bây giờ, nhưng tôi đang tự hỏi nếu điều này là một tác dụng phụ của việc không thiết lập thuộc tính NeedDataSource với nguồn dữ liệu lưới ?

thêm điều này vào điều khiển RadGrid ở giao diện người dùng.

OnNeedDataSource = "radGrid_NeedDataSource"

và xử lý nó trong mã phía sau.

protected void radGrid_NeedDataSource (object sender, GridNeedDataSourceEventArgs e) { view.RadGrid.DataSource = gridData; }

+0

Tôi tin rằng điều này nên làm các trick! NeedDataSource thực hiện mọi phép thuật bạn cần. –

0

Bạn không cần phải cung cấp tập dữ liệu cho lưới khi được tải.Tập dữ liệu được truy xuất bằng cách sử dụng DataSourceID mà bạn đã đặt trong thiết kế, khi được yêu cầu.

Xóa "view.DataSource = dataSet;" và chức năng rebind và mọi thứ sẽ hoạt động như mong đợi.

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