2009-10-29 9 views
5

Próbuję połączyć databind DataTable z akordeonem i odkryłem, że jeśli pobierze DataTable z bazy danych za pomocą adaptera tabeli, to idealnie wiąże się z akordeonem, ale to, co chcę zrobić, to stworzyć atrapę tabeli (w celach testowych, jeśli nie mam dostępu do mojej bazy danych) kod do tworzenia atrapę tabeli poniżej:Tworzenie obiektu DataTable z danymi fikcyjnymi

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

Kiedy próbuję danych wiążą tę tabelę jednak akordeon nie wyświetla . Mogę powiązać go do widoku siatki lub widoku szczegółów, ale nie do akordeonu.

+0

można spróbować dodać więcej informacji do kolumn takich jak dTable.Columns.Add ("firstName", Type.GetType ("System.String"))? –

+0

Mogę to wypróbować, ale jak już powiedziałem, mogę ustawić tabelę na gridview bez żadnych problemów. – Morgeh

Odpowiedz

18

Po 4 godzinach walić głową w ścianę, odkryłem, że pole DataSource jest bardzo wybredna.

Oto mój kod:

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

Okazuje się, że tylko akordeon lubi być związana defaultview stole danej jednostki. Próbowałem powiązać tylko z DataTable (dt) i nie udało się. Nawet dt.DefaultView nie powiodło się. Po dodaniu go do DataSet, wiąże się jak mistrz. Bardzo denerwujące, z utraconym straconym czasem. Wiem, że od dawna już o tym zapomniałeś, ale chciałem udostępnić go przyszłym użytkownikom. Accordion.DataSource musi być powiązany z DataSet.Table.DefaultView do pracy.

1

Upewnij się określić typ dla kolumn w table2.Columns.Add (...)

0

Ponadto, jak widać na poniższym odpowiedź:

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

można powiązać kontrolę Accordion do DataTableReader zbudowanego z oryginalnego DataTable

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