2009-10-29 4 views
5

Je tente de cataloguer un DataTable sur un accordéon et j'ai constaté que si je récupère le DataTable d'une base de données en utilisant un adaptateur de table, il se lie parfaitement à l'accordéon mais ce que je veux faire est créer une table factice (pour fins de test si je n'ai pas accès à ma base de données) le code pour créer la table factice est ci-dessous:Création d'un objet DataTable avec des données fictives

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 je tente de lier les données de cette table mais l'accordéon ne montre pas . Je peux le lier à un gridview ou à un detailview mais pas à l'accordéon.

+0

pouvez-vous essayer d'ajouter plus d'informations aux colonnes telles que dTable.Columns.Add ("firstName", Type.GetType ("System.String"))? –

+0

Je pourrais essayer cela mais comme je l'ai dit avant je peux databind cette table à un gridview sans problèmes. – Morgeh

Répondre

18

Après 4 heures de frapper ma tête contre le mur, j'ai découvert que le champ DataSource est très pointilleux.

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

avère que l'accordéon n'aime être lié à la defaultview d'une table de jeu de données. J'ai essayé de relier juste à un DataTable (dt) et il 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 perdu 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.

1

Assurez-vous que vous spécifiez un type pour les colonnes du table2.Columns.Add (...)

0

En outre, comme on le voit dans la réponse ci-dessous:

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

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

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]); 
accReportData.DataBind(); 
Questions connexes