質問

DataTableをアコーディオンにデータバインドしようとしていますが、テーブルアダプタを使用してデータベースからDataTableを取得すると、アコーディオンに完全にバインドされますが、ダミーテーブルを作成します(テスト用)データベースにアクセスできない場合の目的)ダミーテーブルを作成するコードは次のとおりです。

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

そのテーブルをデータバインドしようとすると、アコーディオンが表示されません。アコーディオンではなく、gridviewまたはdetailsviewにバインドできます。

役に立ちましたか?

解決

4時間かけて頭を壁にぶつけた後、DataSourceフィールドが非常にうるさいことがわかりました。

ここに私のコードがあります:

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

アコーディオンは、データセットテーブルのデフォルトビューにバインドされていることだけを好みます。 DataTable(dt)のみにバインドしようとしましたが、失敗しました。 dt.DefaultViewでも失敗しました。 DataSetに追加すると、チャンプのようにバインドされます。非常に迷惑で、無駄な時間が失われました。おそらくこれを忘れて久しいと思いますが、将来の検索者が利用できるようにしたかったのです。 Accordion.DataSourceを動作させるには、DataSet.Table.DefaultViewにバインドする必要があります。

他のヒント

table2.Columns.Add(...)の列のタイプを必ず指定してください

また、以下の回答に見られるように:

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

アコーディオンコントロールを、元のDataTableから構築されたDataTableReaderにバインドできます

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top