使用虚拟数据创建一个 DataTable 对象

10

我正在尝试将一个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,但无法绑定到手风琴。

你能否尝试在列中添加更多信息,例如dTable.Columns.Add("firstName", Type.GetType("System.String"))? - Henry Gao
我可以尝试一下,但是就像我之前说的那样,我可以将该表与GridView进行数据绑定而没有任何问题。 - Morgeh
3个回答

26

四个小时的头痛后,我发现 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中,它就可以绑定了。非常令人恼火,浪费了很多时间。我知道你可能早已忘记了这件事,但我想让它对未来的搜索者可用。手风琴的DataSource必须绑定到一个DataSet.Table.DefaultView才能起作用。


1

在table2.Columns.Add(...)中,确保为列指定了类型。


0

另外,如下答案所示:

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

您可以将手风琴控件绑定到从原始DataTable构建的DataTableReader上。
accReportData.DataSource = new System.Data.DataTableReader(ds.Tables[0]);
accReportData.DataBind();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接