Ajaxcontroltoolkit acordeão e banco de dados
Pergunta
Estou usando o headertemplate e o contentTemplate do controle de acordeão e vinculando -o a um datatable. Por algum motivo, ele não exibe nenhum dado. Se eu vincular o datatable a um datalista, ele funciona como Ecreted, esse é um problema conhecido ou estou fazendo algo completamente errado. Estou vinculando o controle de acordeão no código por trás, se isso fizer alguma diferença. Aqui está o código:
<cc1:Accordion ID="databoundaccordion" runat="server" AutoSize="None"
HeaderCssClass="articleHeader" HeaderSelectedCssClass="articleHeaderSelected"
ContentCssClass="articleBody" FadeTransitions="true"
SuppressHeaderPostbacks="true" RequireOpenedPane="true"
TransitionDuration="250" FramesPerSecond="40">
<HeaderTemplate>
<%# DataBinder.Eval(Container.DataItem, "name")%>
</HeaderTemplate>
<ContentTemplate>
<p>Content goes here</p>
<a href="Articles.aspx">Go</a>
</ContentTemplate>
E no código C# atrás:
databoundaccordion.DataSource = presenter.getDataTable();
databoundaccordion.DataBind();
Solução
Você terá dificuldades para vincular um acordeão a um objeto DataTable.
Em vez disso, faça o seguinte convertendo -o em um datatableReader e ele deve funcionar bem:
databoundaccordion.DataSource
= new System.Data.DataTableReader(presenter.getDataTable());
databoundaccordion.DataBind();
Aqui está outro exemplo com dados de amostra:
DataTable dt = new DataTable();
dt.Columns.Add("HeaderText");
dt.Columns.Add("ContentText");
dt.Rows.Add(new object[] { "Heading 1", "Content 1" });
dt.Rows.Add(new object[] { "Heading 2", "Content 2" });
databoundaccordion.DataSource = new System.Data.DataTableReader(dt);
databoundaccordion.DataBind();
Outras dicas
Acabei de criar um exemplo simples que funciona bem.
em vez de usar Databinder.Eval(Container.Item, "name")
eu usei Eval("name")
Isso parece funcionar com o exemplo simples, vou atualizar quando testei com meu código de trabalho.