Pregunta

Estoy tratando de vincular un DataTable a un acordeón y descubrí que si recupero el DataTable de una base de datos usando un adaptador de tabla, se une al acordeón perfectamente, sin embargo, lo que quiero hacer es crear una tabla ficticia (para probar propósitos si no tengo acceso a mi base de datos) el código para crear la tabla ficticia está debajo:

    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 intento vincular datos a esa tabla, sin embargo, el acordeón no se muestra. Puedo vincularlo a una vista de cuadrícula o vista de detalles, pero no al acordeón.

¿Fue útil?

Solución

Después de 4 horas de golpearme la cabeza contra la pared, descubrí que el campo DataSource 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 al acordeón solo le gusta estar vinculado a la vista predeterminada de una tabla de conjunto 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 lo hayas olvidado hace mucho tiempo, pero quería que estuviera disponible para futuros buscadores. Accordion.DataSource debe estar vinculado a un DataSet.Table.DefaultView para que funcione.

Otros consejos

Asegúrese de especificar un tipo para las columnas en la tabla2.Columnas.Agregar (...)

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

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

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

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top