Question

J'essaie de lier un DataTable à un accordéon et j’ai trouvé que, si je récupérais le DataTable d’une base de données à l’aide d’un adaptateur de table, il se liait parfaitement à l’accordéon. Cependant, je voulais créer une table factice Si je n'ai pas accès à ma base de données), le code pour créer la table factice est ci-dessous:

    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);

Lorsque j'essaie de lier les données à cette table, l'accordéon ne s'affiche pas. Je peux le lier à un gridview ou à un detailview mais pas à un accordéon.

Était-ce utile?

La solution

Après 4 heures passées à me cogner la tête contre le mur, j'ai découvert que le champ DataSource était TRÈS difficile.

Voici mon code:

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();

Il s'avère que l'accordéon aime seulement être lié à la vue par défaut d'un tableau de jeu de données. J'ai essayé de me lier à seulement un DataTable (dt) et cela a échoué. Même dt.DefaultView a échoué. Une fois que je l'ai ajouté à un DataSet, il se lie comme un champion. Très ennuyeux, avec perte de temps perdu. Je sais que vous avez probablement oublié cela depuis longtemps, mais je voulais le rendre accessible aux futurs chercheurs. Accordion.DataSource doit être lié à un DataSet.Table.DefaultView pour fonctionner.

Autres conseils

Assurez-vous de spécifier un type pour les colonnes dans la table2.Colonnes.Ajoutez (...)

En outre, comme indiqué dans la réponse ci-dessous:

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

Vous pouvez lier le contrôle Accordion à un DataTableReader construit à partir du DataTable d'origine

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top