Domanda

Sto provando a collegare una DataTable a una fisarmonica e ho scoperto che se recupero la DataTable da un database usando un adattatore da tavolo, si lega perfettamente alla fisarmonica, tuttavia quello che voglio fare è creare una tabella fittizia (per il test scopi se non ho accesso al mio database) il codice per creare la tabella fittizia è di seguito:

    DataTable table2 = new DataTable("articletable");
    table2.Columns.Add("articleID");
    table2.Columns.Add("title");
    table2.Columns.Add("content");

    DataRow row = table2.NewRow();
    row[0] = "1";
    row[1] = "article name";
    row[2] = "article contents go here";
    table2.Rows.Add(row);

Quando provo a associare i dati a quella tabella, tuttavia la fisarmonica non viene visualizzata. Posso associarlo a una vista a griglia o a una vista dettagliata ma non alla fisarmonica.

È stato utile?

Soluzione

Dopo 4 ore di sbattere la testa contro il muro, ho scoperto che il campo DataSource è MOLTO esigente.

Ecco il mio codice:

DataSet ds = new DataSet();

        DataTable dt = new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("Branch");
        dt.Columns.Add("Officer");
        dt.Columns.Add("CustAcct");
        dt.Columns.Add("Grade");
        dt.Columns.Add("Rate");
        dt.Columns.Add("OrigBal");
        dt.Columns.Add("BookBal");
        dt.Columns.Add("Available");
        dt.Columns.Add("Effective");
        dt.Columns.Add("Maturity");
        dt.Columns.Add("Collateral");
        dt.Columns.Add("LoanSource");
        dt.Columns.Add("RBCCode");

        dt.Rows.Add(new object[] { "James Bond, LLC", 120, "Garrison Neely", "123 3428749020", 35, "6.000", "$24,590", "$13,432",
            "$12,659", "12/13/21", "1/30/27", 55, "ILS", "R"});

        ds.Tables.Add(dt);

        accReportData.DataSourceID = null;
        accReportData.DataSource = ds.Tables[0].DefaultView;
        accReportData.DataBind();

Si scopre che alla fisarmonica piace solo essere legato alla vista predefinita di una tabella del set di dati. Ho provato ad associare solo un DataTable (dt) e non è riuscito. Anche dt.DefaultView non è riuscito. Una volta aggiunto a un DataSet, si lega come un campione. Molto fastidioso, con perdita di tempo perso. So che probabilmente l'hai dimenticato da molto tempo, ma volevo renderlo disponibile per i futuri ricercatori. Accordion.DataSource deve essere associato a DataSet.Table.DefaultView per funzionare.

Altri suggerimenti

Assicurati di specificare un tipo per le colonne in table2.Columns.Add (...)

Inoltre, come indicato nella risposta di seguito:

https://stackoverflow.com/a/6108163/637903

Puoi associare il controllo della fisarmonica a un DataTableReader costruito dalla DataTable originale

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top