質問

アコーディオンのHeaderTemplateとContentTemplateを使用しています 制御し、データテーブルにバインドします。何らかの理由で データを表示します。データテーブルをデータリストにバインドすると、次のように機能します 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>

およびC#コードビハインド:

databoundaccordion.DataSource = presenter.getDataTable();
databoundaccordion.DataBind();
役に立ちましたか?

解決

アコーディオンを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、&quot; name&quot;)を使用するのではなく、 Eval(&quot; name&quot;)

を使用しました

これは単純な例で動作するようです。動作中のコードでテストしたときに更新します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top