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();
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top