Pergunta

Eu estou tentando vincular um DataTable para um acordeão e eu descobri que se eu recuperar a DataTable a partir de um banco de dados usando um adaptador de tabela que se liga ao acordeão perfeitamente no entanto o que eu quero fazer é criar uma tabela fictícia (para testes fins, se eu não tenho acesso ao meu banco de dados) o código para criar a tabela de manequim está abaixo:

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

Quando tento vincular dados que a tabela no entanto o acordeão não é exibido. Eu posso ligá-la para um gridview ou DetailsView, mas não o acordeão.

Foi útil?

Solução

Depois de 4 horas de bater minha cabeça contra a parede, eu descobri que o campo DataSource é muito exigente.

Aqui está o meu 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();

Acontece que o acordeão única gosta de ser obrigado a defaultview de uma tabela dataset. Tentei ligação a apenas um DataTable (dt) e falhou. Mesmo dt.DefaultView falhou. Uma vez que adicionado a um DataSet, liga-se como um champ. Muito chato, com perda de tempo perdido. Eu sei que você provavelmente longo desde esquecido isso, mas eu queria torná-lo disponível para os futuros pesquisadores. Accordion.DataSource deve ser vinculado a um DataSet.Table.DefaultView ao trabalho.

Outras dicas

Certifique-se de especificar um tipo para as colunas na table2.Columns.Add (...)

Além disso, como visto na resposta abaixo:

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

Você pode vincular o controle do acordeão a um DataTableReader construído a partir do DataTable originais

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top