Como usar Paginación en DataGrid Silverlight


Saludos amig@s en este articulo veremos como Paginar un dataGrid Silverlight usando un Control de tipo DataPager ,  que la verdad es demasiado sencillo.
Bueno primero veremos que necesitamos en la Interfaz osea en nuestro Codigo XAML.


 
<Button Content="Cargar Usuarios" Height="23" HorizontalAlignment="Left" Name="btnCargarUsuarios" Width="108" Click="btnCargarUsuarios_Click" />
       
<sdk:DataGrid AutoGenerateColumns="True" Height="100" HorizontalAlignment="Left" Name="dgUsuarios" VerticalAlignment="Top" Width="296" />
       
<sdk:DataPager Height="26" HorizontalAlignment="Left" Name="pagerUsuarios" PageSize="3" VerticalAlignment="Top" Width="296/>
 
 

Vemos que tenemos el DataGrid y un DataPager, lo mas resaltante de esto es que en la Propiedad PageSize del DataPager, podemos configurar Cuantos items podemos hacer aparecer por pagina.

Ahora veremos que en el Codigo vamos a cargar datos de un archivo XML.


   private void btnCargarUsuarios_Click(object sender, RoutedEventArgs e)
        {
        WebClient client1 = new WebClient();
        client1.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client1_DownloadStringCompleted); Uri filePath = new Uri("Usuarios.xml", UriKind.Relative); client1.DownloadStringAsync(filePath);
      }
 
void client1_DownloadStringCompleted(object sender,  DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                XDocument doc = XDocument.Parse(e.Result);
                IEnumerable<Person> list = from p in doc.Descendants("User")
                                 select new Person
                                  {
                                     FirstName = (string)p.Attribute("FirstName"),
                                     LastName = (string)p.Attribute("LastName"),
                                     Email = (string)p.Attribute("Email")
                                  };
                PagedCollectionView Data = new PagedCollectionView(list);
                dgUsuarios.ItemsSource = Data;
                pagerUsuarios.Source = Data;
             }
        }
        public class Person
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Email { get; set; }
        }
 


Donde vemos que el Objeto PagedCollectionView, recibe en su constructor los datos, y se lo Asigna tanto para el DataGrid como para el DataPager.
Asi que el truco esta en que  tanto DataGrid y DataPager tengan la misma Data.

dgUsuarios.ItemsSource = Data;



pagerUsuarios.Source = Data;


En este caso estamos usando un archivo XML para cargar los datos,"Usuarios.xml", no olvidar que este  archivo debe estar dentro de la carpta ClientBin, En el proyecto Silverlight


 
<?xml version="1.0" encoding="utf-8" ?>
<Users>
  <User FirstName="giancarlo" LastName="gamarra" Email="giancarlo@hotmail.com"/>
  <User FirstName="genesis" LastName="luciana" Email="genesis@hotmail.com"/>
  <User FirstName="ledy" LastName="monica" Email="ledy@hotmail.com"/>
  <User FirstName="alexander" LastName="gamarra" Email="alexander@hotmail.om"/>
  <User FirstName="william" LastName="gamarra" Email="william@hotmail.com"/>
  <User FirstName="teresa" LastName="charaja" Email="teresa@hotmail.com"/>
  <User FirstName="washington" LastName="villegas" Email="washington@hotmail.com"/>
</Users>
 

Bueno si tienen alguna duda con respecto a este codigo, por favor comentarlo, para resolver todas sus dudas.


Aqui les dejo un ejemplo real como les debería quedar sus aplicaciones.



Comments

Popular posts from this blog

Error al Iniciar Oracle SQL Developer 11g - Unable to find Java Virtual Machine

Como Mantener el Scroll despues de un PostBack ASP.net ( As Maintain Scroll after a PostBack ASP.net )

How to run ng serve in a different port
Como ejecutar ng serve en un puerto diferente