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