2011-10-07 12 views
8

Recentemente ho iniziato ad usare ASP.Net e RadGrid di Telerik ma hanno funzionato in un problema:Telerik RadGrid Paging - record duplicati e pulsanti che spuntano

Il mio scopo RadGrid è all'interno di un oggetto UserControl all'interno di un oggetto controllo personalizzato all'interno di un Oggetto della pagina (che ha un gestore di script).

Ho diversi controlli utente all'interno di detto controllo personalizzato, ognuno contenente il markup per un oggetto RadGrid come di seguito:

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

ho cambiato i nomi delle colonne e spazi dei nomi a qualcosa di non-progetto specifico, ma la carichi di griglia.

perchè è in un controllo personalizzato, che viene istanziato come segue:

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

la variabile dataSet è di tipo System.Data.DataSet.

Quindi, quando eseguo questo sito Web, appare la griglia Rad. Ho una griglia con 4 righe, 3 delle quali sono a pagina 1 e la riga finale è a pagina 2. initial radgrid after page 2 click Quando faccio clic su pagina 2, tutto avviene come previsto. Lo stile per i pulsanti della pagina cambia e le righe della pagina 1 vengono rimosse, con la riga della pagina 2 aggiunta alla griglia. Grande! Quello che succede dopo è quello che non capisco:

Quando si fa nuovamente clic sulla pagina 1, lo stile per il pulsante della pagina 2 non cambia (quindi è ancora come se fosse cliccato) e le righe 2 e 3 appaiono sul griglia, ma la prima riga è la riga che era a pagina 2.

re-visit to page 1

sembra come se la pagina 2 non è di compensazione quando la pagina viene caricata 1, non sono sicuro di come o perché questo è, anche se. Qualcuno ha qualche idea su cosa sto facendo in modo errato?

Apprezzerei molto il vostro aiuto.

Cheers,

Rob

+1

Davvero una buona domanda. Ecco come dovrebbero essere le domande. –

+0

Qualche possibilità di postare il controllo stesso? Ho iniziato a configurare un progetto per la risoluzione dei problemi, ma mi sono reso conto che non c'è modo di non creare un'istanza dell'oggetto. – KreepN

+0

Hai riscontrato questo problema in tutti i browser o solo in un browser specifico? –

risposta

1

Sono sicuro che hai capito questo, ormai, ma mi chiedo se questo è un effetto collaterale di non impostare la proprietà NeedDataSource con l'origine dati griglia ?

aggiungere questo al controllo RadGrid sul front-end.

OnNeedDataSource = "radGrid_NeedDataSource"

e gestirlo in codice dietro.

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

+0

Credo che questo dovrebbe fare il trucco! NeedDataSource fa tutta la magia di cui hai bisogno. –

0

Non è necessario fornire il set di dati alla rete quando caricato.Il set di dati viene recuperato utilizzando il DataSourceID impostato in fase di progettazione, quando richiesto.

Rimuovi "view.DataSource = dataSet;" e la funzione rebind e tutto dovrebbe funzionare come previsto.

Problemi correlati