Создание объекта DataTable с фиктивными данными - PullRequest
9 голосов
/ 29 октября 2009

Я пытаюсь привязать 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);

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

Ответы [ 3 ]

22 голосов
/ 26 июля 2010

После 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.

1 голос
/ 30 октября 2009

Убедитесь, что вы указали тип для столбцов в table2.Columns.Add (...)

0 голосов
/ 22 июня 2013

Также, как видно из ответа ниже:

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

Вы можете привязать Accordion Control к DataTableReader, созданному из оригинальной DataTable

accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();
...