C# 需要将DataList与两个数据源绑定

C# 需要将DataList与两个数据源绑定,c#,asp.net,C#,Asp.net,我正在数据列表中显示一些信息。 我可以将数据列表绑定到两个数据源吗。?? 因为我面临的情况是,需要从两个不同的表填充这两行。下面是我想做的 <asp:DataList runat="server" id="myDataList"> <ItemTemplate> <b><%# DataBinder.Eval(Container.DataItem, "Column from DataSource1") %></b> &l

我正在数据列表中显示一些信息。 我可以将数据列表绑定到两个数据源吗。?? 因为我面临的情况是,需要从两个不同的表填充这两行。下面是我想做的

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



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


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

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


但是,您将无法从databinder进行更新,尽管在nunespascal提供的选项中,如果您已经进行了连接/交叉,则无法从dataset进行简单更新。

无法将两个数据源绑定到单个项

理想情况下,您必须使用联接从数据库中获取数据,如果在服务器端代码中不可能这样做,则创建一个数据表,从两个数据源中填充数据,这样在自定义数据表中,两个数据源中的每一行都有一行,然后将该数据表与数据列表绑定

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