0

DataList にいくつかの情報を表示しています。DataList を 2 つの DataSources にバインドできますか?? 2 つの異なるテーブルから 2 つの行を設定する必要がある状況に直面しているためです。以下は私がやろうとしていることです。

<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つのデータソースを1つのアイテムにバインドすることはできません。

理想的には、データベースからJOINSを使用してデータを取得する必要があります。それがサーバー側のコードでデータテーブルを作成するよりも不可能な場合は、カスタムデータテーブルで1行になるように、両方のデータソースからデータを入力します。両方のデータソースの各行と、そのデータテーブルをデータリストにバインドします。

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

最善の方法は、データテーブルを作成し、各データセットから行をインポートして1つの大きなデータテーブルを作成し、それをバインドすることです。

ただし、nunespascalが提供するオプションでは、結合/交差を実行した場合、データセットから単純な更新を実行することはできませんが、データバインダーから更新することはできません。

于 2012-09-11T12:38:41.730 に答える
0

データソースがこれら2つのテーブル(内部結合、相互結合など)を組み合わせる方法を決定することは不可能です。これらを自分で組み合わせる必要があります。
私もあなたにそれらを組み合わせるためのコードを与えることができません。あなたの2つのテーブルがどのように関連しているかわからないからです。

内部結合を行う必要がある場合は、2番目のデータソースの列を最初のテーブルに追加してから、行をループしてテーブルを埋めます。

于 2012-09-11T12:33:05.937 に答える
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 に答える