2011-10-07 23 views
8

recientemente he empezado a utilizar ASP.Net y RadGrid Telerik pero han topó con un problema:Telerik RadGrid Paging - Duplicar los botones que sobresalen los registros y

Mi objetivo RadGrid está dentro de un objeto de control de usuario dentro de un objeto de control personalizado dentro de una Objeto de página (que tiene un administrador de script).

Tengo varios UserControls dentro de dicho control personalizado, cada uno con el marcado de un objeto RadGrid de la siguiente manera:

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

he cambiado los nombres de las columnas y espacios de nombres a algo que no es del proyecto específico, pero la cargas de red

ya que está en un control personalizado, se crea una instancia de la siguiente manera:

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

la variable dataSet es de tipo System.Data.DataSet.

Por lo tanto, cuando ejecuto este sitio web, aparece la Rad Grid. Tengo una cuadrícula con 4 filas, 3 de las cuales están en la página 1 y la última fila está en la página 2. initial radgrid Cuando hago clic en la página 2, todo sucede como se esperaba. El estilo de los botones de página cambia, y las filas de la página 1 se eliminan, y la fila de la página 2 se agrega a la cuadrícula. ¡Estupendo! Lo que sucede después es lo que no entiendo:

Cuando se hace clic de nuevo en la página 1, el estilo del botón de la página 2 no cambia (por lo que sigue como si se hubiera hecho clic) y las filas 2 y 3 aparecen en parrilla, pero la primera fila es la fila que estaba en la página 2.

re-visit to page 1

parece como si la página 2 no está limpiando cuando se carga la página 1, no estoy seguro de por qué o cómo esto es, aunque. ¿Alguien tiene alguna idea de lo que estoy haciendo incorrectamente?

Realmente agradecería su ayuda.

Saludos,

Rob

+1

Realmente bien juntos, pregunta. Así es como deben ser las preguntas. –

+0

¿Existe la posibilidad de publicar el control? Empecé a configurar un proyecto para solucionar problemas, pero me di cuenta de que no hay manera de hacerlo si no puedo crear una instancia del objeto. – KreepN

+0

¿Tiene este problema en todos los navegadores o solo en un navegador específico? –

Respuesta

1

Estoy seguro de que tienes esta resuelto por ahora, pero me pregunto si esto es un efecto secundario de no establecer la propiedad NeedDataSource con el origen de datos de cuadrícula ?

agregar esto al control RadGrid en la parte delantera.

OnNeedDataSource = "radGrid_NeedDataSource"

y manejarlo de código subyacente.

protected void radGrid_NeedDataSource (remitente del objeto, GridNeedDataSourceEventArgs e) { view.RadGrid.DataSource = gridData; }

+0

¡Creo que esto debería ser el truco! NeedDataSource hace toda la magia que necesitas. –

0

No es necesario que proporcione el conjunto de datos a la cuadrícula cuando se carga.El conjunto de datos se recupera utilizando el DataSourceID que ha establecido en el diseño, cuando sea necesario.

Eliminar "view.DataSource = dataSet;" y la función de reenlace y todo debería funcionar como se esperaba.

Cuestiones relacionadas