2009-10-29 31 views
5

Estoy tratando de vincular un DataTable a un acordeón y he encontrado que si recupero el DataTable de una base de datos usando un adaptador de tabla, se une perfectamente al acordeón, pero lo que quiero hacer es crear una tabla ficticia (para propósitos de prueba, si no tengo acceso a mi base de datos) el código para crear la tabla ficticia es el siguiente:Creando un objeto DataTable con datos ficticios

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

Cuando trato de los datos se unen esa mesa sin embargo el acordeón no se visualiza . Puedo enlazarlo a una vista de cuadrícula o de detalles, pero no al acordeón.

+0

se puede tratar de añadir más información a las columnas como dTable.Columns.Add ("firstName", Type.GetType ("System.String"))? –

+0

Podría intentarlo pero, como dije antes, puedo vincular esa tabla a una vista de cuadrícula sin problemas. – Morgeh

Respuesta

18

Después de 4 horas de golpeando mi cabeza contra la pared, he descubierto que el campo de origen de datos es muy exigente.

Aquí está mi código:

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

Resulta que el acordeón solamente le gusta ser obligado a DefaultView de una tabla de datos. Intenté vincular solo una DataTable (dt) y falló. Incluso dt.DefaultView falló. Una vez que lo agregué a un DataSet, se une como un campeón. Muy molesto, con pérdida de tiempo perdido. Sé que probablemente hace tiempo que se olvidó de esto, pero quería que esté disponible para futuros buscadores. Accordion.DataSource debe estar vinculado a un DataSet.Table.DefaultView para que funcione.

1

asegurarse de que especifica un tipo de las columnas de la table2.Columns.Add (...)

0

Además, como se ve en la respuesta a continuación:

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

Puede enlazar el control del acordeón a un DataTableReader construido a partir del original DataTable

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