0

我在 DataList 中显示一些信息。我可以将 DataList 绑定到两个 DataSource 吗??因为我面临需要从两个不同的表中填充两行的情况。以下是我正在尝试做的事情。

<asp:DataList runat="server" id="myDataList">
  <ItemTemplate>
    <b><%# DataBinder.Eval(Container.DataItem, "Column from DataSource1") %></b>
    <br />
    <%# DataBinder.Eval(Container.DataItem, "Column from DataSource2") %>
  </ItemTemplate>
</asp:DataList>
4

4 回答 4

1

无法将 2 个数据源绑定到单个项目。

理想情况下,您必须通过使用 JOINS 从数据库中获取数据,如果这比在您的服务器端代码中创建一个数据表是不可能的,请从两个数据源中填充它,以便在自定义数据表中您有一行两个数据源中的每一行,然后将该数据表与您的数据列表绑定。

DataTable customTable = new DataTable();
        customTable.Columns.Add("Column1");
        customTable.Columns.Add("Column2");

        DataRow drNew = null;
        foreach(DataRow dR in 1stDataSource)
        {
            foreach(DataRow dR1 in 2ndDataSource)
            {
                if(dR["ID"] == dR1["ID"])
                {
                    drNew = customTable.NewRow();
                    drNew["Column1"] = dR["Column1"];
                    drNew["Column2"] = dR1["Column2"];
                    customTable.Rows.Add(drNew);
                    break;
                }
            }
        }

        myDataList.DataSource = customTable;
        myDataList.DataBind();
于 2012-09-11T12:39:02.807 回答
0

DataSource 无法确定如何组合这两个表(内连接、交叉连接等)。您必须自己组合这些。
我也不能给你代码来组合它们,因为我不知道你的两个表是如何相关的。

如果您必须进行内部连接,只需将第二个数据源中的列添加到第一个表中,然后遍历行以填充表。

于 2012-09-11T12:33:05.937 回答
0

最好的方法是创建一个数据表并从每个数据集中导入行以创建一个大数据表,然后绑定它。

但是,您将无法从数据绑定器更新,尽管在 nunespascal 提供的选项中,如果您无论如何都完成了连接/交叉,则无法从数据集进行简单更新。

于 2012-09-11T12:38:41.730 回答
0
    ds.Tables[0].TableName = "Cats";
    ds.Tables[1].TableName = "Products";
    ds.Relations.Add("children", ds.Tables["Cats"].Columns["categoryno"],
                         ds.Tables["Products"].Columns["categoryno"]);
    YourDataList.DataSource = ds;
    YourDataList.DataBind();
于 2013-03-27T12:53:47.773 回答