es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mostrar datos de un documento de Firestore en un datagrid WPF

Estoy intentando mostrar los datos de mi Firestore en una cuadrícula de datos. Puedo devolver todas las filas si lo hago en un ListView, pero realmente necesito que esto esté en una cuadrícula de datos. También puedo devolver una fila utilizando el siguiente código. He intentado usar una colección de listas y una colección observable, ambas parecen devolver una fila también.

“`
async void GetFurtherWorksApp()
{

<pre><code>string path = AppDomain.CurrentDomain.BaseDirectory + @"cloudfire.json";
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", path);

database = FirestoreDb.Create("engineer-app");

Query DOC = database.Collection("further_works");
QuerySnapshot snap = await DOC.GetSnapshotAsync();

foreach (DocumentSnapshot docsnap in snap.Documents)
{
FurtherWorks job = docsnap.ConvertTo<furtherworks>();

//FurtherWorksList.Items.Add( new { docsnap.Id, job.company, job.cost, job.jobnumber, job.jobstatus, job.partsreq, job.timespent, job.timesreq });

//FurtherWorksList.Items.Add(new { Col1 = docsnap.Id, Col2 = job.company, Col3 = job.cost, Col4 = job.jobstatus, Col5 = job.partsreq, Col6 = job.timespent, Col7 = job.timereq });

//FurtherWorksList.Columns.Add( Col1 = docsnap.Id, Col2 = job.company, Col3 = job.cost, Col4 = job.jobstatus, Col5 = job.partsreq, Col6 = job.timespent, Col7 = job.timereq );

ObservableCollection<furtherworks> items = new ObservableCollection<furtherworks>();
items.Add(new FurtherWorks { jobnumber = job.jobnumber, company = job.company, cost = job.cost });
FurtherWorksList.ItemsSource = items;

}
</code></pre>

}
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar datos de Firestore en una cuadrícula de datos, puedes utilizar el control DataGrid proporcionado en WPF. Primero, debes asegurarte de que las columnas estén correctamente definidas en la cuadrícula de datos. Esto se puede hacer tanto en XAML como en el código detrás. Una vez que las columnas estén definidas, puedes crear una ObservableCollection, agregar tus objetos a ella y luego enlazar la ObservableCollection a la propiedad ItemsSource de la cuadrícula de datos.

    En el fragmento de código proporcionado, estás creando una nueva ObservableCollection para cada fila en la colección de Firestore, lo cual no es necesario. En su lugar, puedes mover la creación de la ObservableCollection fuera del bucle y luego agregar tus objetos a la misma colección. Aquí tienes un fragmento de código actualizado que muestra cómo poblar una cuadrícula de datos con datos de Firestore:

    async void GetFurtherWorksApp()
    {
        string path = AppDomain.CurrentDomain.BaseDirectory + @"cloudfire.json";
        Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", path);
    
        database = FirestoreDb.Create("engineer-app");
    
        Query DOC = database.Collection("further_works");
        QuerySnapshot snap = await DOC.GetSnapshotAsync();
    
        ObservableCollection<furtherworks> items = new ObservableCollection<furtherworks>();
    
        foreach (DocumentSnapshot docsnap in snap.Documents)
        {
            FurtherWorks job = docsnap.ConvertTo<furtherworks>();
            items.Add(job);
        }
    
        FurtherWorksList.ItemsSource = items;
    }
    

    En este ejemplo, la cuadrícula de datos se llama “FurtherWorksList”. También debes asegurarte de que las columnas de la cuadrícula de datos estén definidas en XAML o en el código detrás para que funcione correctamente.

    ¡Espero que esto te ayude!

Comments are closed.