Telerik RadGrid Paging - дублирующиеся записи и кнопки залипания - PullRequest
8 голосов
/ 07 октября 2011

Я недавно начал использовать ASP.Net и Radrikrid от Telerik, но столкнулся с проблемой:

Мой объект RadGrid находится в объекте UserControl в объекте пользовательского элемента управления в объекте Page (в котором есть диспетчер сценариев).

У меня есть несколько пользовательских элементов управления в указанном пользовательском элементе управления, каждый из которых содержит разметку для объекта RadGrid, как показано ниже:

<%@ 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>

Я изменил имена столбцов и пространств имен на что-то не зависящее от проекта, но сетка загружается.

Как и в пользовательском элементе управления, он создается следующим образом:

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

переменная dataSet имеет тип System.Data.DataSet.

Итак, когда я запускаю этот сайт, появляется Rad Grid. У меня есть сетка с 4 рядами, 3 из которых находятся на странице 1, а последний ряд - на странице 2. initial radgrid after page 2 click Когда я нажимаю на страницу 2, все происходит, как ожидалось. Изменяется стиль для кнопок страницы, и строки со страницы 1 удаляются, а строка со страницы 2 добавляется в сетку. Большой! Что происходит дальше, я не понимаю:

При повторном нажатии на страницу 1 стили для кнопки страницы 2 не изменяются (поэтому все равно, как при нажатии), а строки 2 и 3 появляются в сетке, но первая строка - это строка, которая была включена страница 2.

re-visit to page 1

кажется, что страница 2 не очищается при загрузке страницы 1, хотя я не уверен, почему или как это происходит. У кого-нибудь есть идеи, что я делаю неправильно?

Буду очень признателен за вашу помощь.

Приветствия

Rob

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Я уверен, что вы уже поняли это, но мне интересно, если это побочный эффект не установки свойства NeedDataSource с источником данных grid?

добавить это в элемент управления RadGridна внешнем интерфейсе.

OnNeedDataSource = "radGrid_NeedDataSource"

и обработайте его в коде позади.

защищено void radGrid_NeedDataSource(отправитель объекта, GridNeedDataSourceEventArgs e) {view.RadGrid.DataSource = gridData;}

0 голосов
/ 09 августа 2013

Вам не нужно предоставлять набор данных в сетку при загрузке.Набор данных извлекается с использованием DataSourceID, который вы установили в дизайне, когда это необходимо.

Удалить "view.DataSource = dataSet;"и функция перепривязки и все должно работать как положено.

...