none
ENLAZAR DATAGRID EN XAMARIN FORMS RRS feed

  • Pregunta

  • Cordial saludo.

    Estoy aprendiendo Xamarin y me he encontrado con la necesidad de consultar los datos de una tabla en una base de datos SQL Server.  He logrado realizar exitosamente la conexión, el DataAdapter y cargar el DataSet respectivo.

    Ahora deseo visualizar al usuario los resultados en pantalla, pero no lo he logrado ya que no tengo idea de cómo usar el control DataGrid en Xamarin Forms.

    He agregado el paquete Nuget Xamarin.Forms.DataGrid (versión 3.1.0) de Ebubekir Akgul

    En el XAML creo el control así:

    <datagrid:DataGrid x:Name="Clientes"

    Previamente en el ContenPage agregando:

    xmlns:datagrid="clr- mespace:Xamarin.Forms.DataGrid;assembly=Xamarin.Forms.DataGrid"

    Ya en el XAML.CS he intentado lo siguiente:

    Clientes.ItemsSource = dataSet.Tables["DATOS"].DefaultView;

    No sale ningún error al ejecutar, pero solo se visualiza un espacio de color negro.

    Agradezco por favor cualquier orientación al respecto, ya que no he podido encontrar nada en Internet, solo se ven otros paquetes Nuget que son de costo.

    Gracias.


    Fabio Vanegas

    lunes, 3 de febrero de 2020 0:19

Respuestas

  • Muchas gracias por su orientación y respuesta.

    Intentaré usando un Web Service para ya en la vida real, por ahora solo estoy estudiando como usar el control Datagrid ya que soy nuevo en este mundo de Xamarin y me pareció más fácil hacerlo para pruebas de esta forma, pero obvio tiene toda la razón que no debo hacerlo así y agradezco nuevamente por hacerme entender más este modelo de desarrollo.

    Probará su sugerencia y comentare el resultado. Feliz día.


    Fabio Vanegas

    • Marcado como respuesta Fabio Vanegas lunes, 3 de febrero de 2020 14:01
    lunes, 3 de febrero de 2020 14:01

Todas las respuestas

  • hola

    >>He logrado realizar exitosamente la conexión, el DataAdapter y cargar el DataSet respectivo.

    Estas seguro que eso esta bien ? entiendo una app mobile no deberia conectarse directo a los datos, sino que deberia consumirlo por medio de un Web Service

    el servicio web si se conecta a la base de datos y devuelve en formato json si es una webapi la info que la UI necesita, o podrian ser servicio de WCF, tambien seria valido

    Pero no conectaria directamente Xamarin a la db

    >>pero no lo he logrado ya que no tengo idea de cómo usar el control DataGrid en Xamarin Forms.

    Estas usando el patron MVVM ?

    Xamarin.Forms.DataGrid

    veras que en ejemplo usa

        <dg:DataGrid ItemsSource="{Binding Teams}"

    porque en el ViewModel define la propiedad Teams

    DataGridSample

    en el ejemplo usa un DummyDataProvider para tener datos, pero es alli donde deberias ir a la db o el web service para obtenerlos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 3 de febrero de 2020 4:09
  • Muchas gracias por su orientación y respuesta.

    Intentaré usando un Web Service para ya en la vida real, por ahora solo estoy estudiando como usar el control Datagrid ya que soy nuevo en este mundo de Xamarin y me pareció más fácil hacerlo para pruebas de esta forma, pero obvio tiene toda la razón que no debo hacerlo así y agradezco nuevamente por hacerme entender más este modelo de desarrollo.

    Probará su sugerencia y comentare el resultado. Feliz día.


    Fabio Vanegas

    • Marcado como respuesta Fabio Vanegas lunes, 3 de febrero de 2020 14:01
    lunes, 3 de febrero de 2020 14:01
  • Cordial saludo.

    Definitivamente esto de Xamarin Forms me está golpeando.

    He logrado avances significativos, como el de crear el WebService

    para obtener los datos desde una base de datos SQL Server.

    En otros lenguajes de Microsoft hago esto (obviamos lo de la conexión que ya funciona ok),

    de forma sencilla y elemental visualizándose automáticamente los campos en el datagrid:

    NOTA: con es el nombre de la conexión

    SqlDataAdapter daClientes = new SqlDataAdapter("Select NIP_CLIENTE, NOMBRES, APELLIDOS, GENERO, TELEFONO From Clientes", con);

    DataSet dsAlexia = new DataSet();

    daClientes.Fill(dsAlexia, "DATOS");

    DataGrid Clientes = new DataGrid();

    Clientes.DataSource = dsAlexia.Tables("DATOS")

    Ahora he querido hacer esto mismo en Xamarin Forms sin éxito:

    En el XAML he configurado esto (dentro del ContentPage.Content):

    <datagrid:DataGrid x:Name="CLIENTES" >

      <datagrid:DataGrid.Columns>

        <datagrid:DataGridColumn Title="NIP" PropertyName="NIP_CLIENTE" Width="2*"/>

        <datagrid:DataGridColumn Title="NOMBRES" PropertyName="NOMBRES" Width="2*"/>

        <datagrid:DataGridColumn Title="APELLIDOS" PropertyName="APELLIDOS" Width="2*"/>

        <datagrid:DataGridColumn Title="GENERO" PropertyName="GENERO" Width="2*"/>

        <datagrid:DataGridColumn Title="TELEFONO" PropertyName="TELEFONO" Width="2*"/>

                       

       </datagrid:DataGrid.Columns>

    </datagrid:DataGrid>

    En el archive XAML.CS he escrito esto dentro del evento de un botón:

    SqlDataAdapter daClientes = new SqlDataAdapter("Select NIP_CLIENTE, NOMBRES, APELLIDOS, GENERO, TELEFONO From Clientes", con);

    DataSet dsAlexia = new DataSet();

    daClientes.Fill(dsAlexia, "DATOS");

    CLIENTES.ItemsSource = dsAlexia.Tables["DATOS"].DefaultView;

    Ejecuto y sale perfecto la aplicación, veo que se visualizan las columnas con sus nombres, ahora pulso el botón respectivo para ejecutar la consulta, la misa se ejecuta sin errores, pero en el control Datagrid se ve todo en negro.

    Agradezco por favor cualquier orientación para saber en qué estoy fallando, pues he visto muchos ejemplos, pero no he logrado entenderlos, y mi curva de aprendizaje de Xamarin la voy haciendo lentamente para entender todo…. Gracias.


    Fabio Vanegas

    viernes, 14 de febrero de 2020 0:28
  • Que tal Fabio Venegas,

    Espero hayas resuelto tu problema, en todo caso te sugiero que en lugar de usar el datagrid por tu no usas un listview.

    Asi es como estoy mostrando los datos, aun que yo estoy utilizando sqlite y linq para la consulta. 

    Saludos.


    • Editado delfino morales jueves, 2 de abril de 2020 23:39 Falto agregar comentario
    jueves, 2 de abril de 2020 23:32
  • Muchas gracias por su amable respuesta.

    Tengo abandonado ese tema, pero con su nueva orientación retomaré el caso a ver cómo me va.

    Feliz día.


    Fabio Vanegas

    viernes, 3 de abril de 2020 14:58