Вопрос

Я использую Headertemplate и ContentTemplate управления аккордеоном и привязываю его к данным.По какой -то причине он не отображает никаких данных.Если я связываю DataTable с даталистом, он работает как Ecpected, это известная проблема или я делаю что -то совершенно не так.Я связываю контроль аккордеона в коде, если это имеет какое -либо значение.Вот код:

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

и в коде С# позади:

databoundaccordion.DataSource = presenter.getDataTable();
databoundaccordion.DataBind();
Это было полезно?

Решение

У вас возникнут трудности с привязкой Accordion к объекту DataTable.
Вместо этого сделайте следующее, преобразовав его в DataTableReader, и он должен работать нормально:

databoundaccordion.DataSource
                    = new System.Data.DataTableReader(presenter.getDataTable());
databoundaccordion.DataBind();

Вот еще один пример с примерами данных:

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

Другие советы

Я только что построил простой пример, который отлично работает.

вместо того, чтобы использовать Databinder.Eval(Container.Item, "name") я использовал Eval("name")

Кажется, это работает с простым примером, я обновлю, когда проверю свой рабочий код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top