2009-10-29 9 views
5

Ich versuche, eine DataTable an ein Akkordeon zu binden, und ich habe festgestellt, dass Wenn ich die DataTable aus einer Datenbank mithilfe eines Tabellenadapters abrufen bindet es perfekt, aber was ich tun möchte eine Dummy-Tabelle erstellen (für Prüfzwecke, wenn ich keinen Zugriff auf meine Datenbank haben), um den Code ist, die Dummy-Tabelle erstellen unter:Erstellen eines DataTable-Objekts mit Dummy-Daten

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

wenn ich Daten versuchen binden jedoch, dass die Tabelle das Akkordeon nicht angezeigt . Ich kann es an eine Gridview oder Detailansicht binden, aber nicht an das Akkordeon.

+0

können Sie versuchen, mehr Informationen hinzuzufügen zu den Spalten wie dTable.Columns.Add ("firstName", Type.GetType ("System.String"))? –

+0

Ich könnte das versuchen, aber wie ich schon sagte, kann ich diese Tabelle zu einer Gridview ohne Probleme erstellen. – Morgeh

Antwort

18

Nach 4 Stunden meinen Kopf gegen die Wand schlug, entdeckte ich, dass die Datasource-Feld sehr wählerisch ist.

Hier ist mein 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(); 

Es stellte sich heraus, dass das Akkordeon nur zu einem Dataset-Tabelle der Standardansicht gebunden gerne wird. Ich habe versucht, nur an eine DataTable (dt) zu binden und es ist fehlgeschlagen. Sogar dt.DefaultView ist fehlgeschlagen. Sobald ich es einem DataSet hinzugefügt habe, bindet es wie ein Champion. Sehr nervig, mit verlorener Zeit. Ich weiß, dass du das wahrscheinlich längst vergessen hast, aber ich wollte es zukünftigen Suchern zugänglich machen. Accordion.DataSource muss an eine DataSet.Table.DefaultView gebunden sein, damit sie funktioniert.

1

Achten Sie darauf, einen Typ für die Spalten in der table2.Columns.Add angeben (...)

0

auch, wie weiter unten in der Antwort gesehen:

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

Sie können die Akkordeon-Steuerung binden an eine Datatablereader aus dem ursprünglichen Datentabelle konstruiert

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