1

私のアプリケーションは 3 層アーキテクチャで構築されています。ただし、値オブジェクト クラスのデータ ソースへのドロップダウン リストが必要です。現在、データ アクセス レイヤー -> ビジネス ロジック レイヤー -> プレゼンテーション レイヤーからドロップダウンリストをデータソーシングしています。しかし、値オブジェクトからリストをデータソースしたいと考えています。したがって、私が欲しいのは、データ アクセス レイヤー -> 値オブジェクト -> ビジネス ロジック レイヤー -> プレゼンテーション レイヤー (ドロップダウン) です。値オブジェクトにデータ ソース化しようとしましたが、「無効なデータ ソースです。タイプ IListSource、IEnumerable、または IDataSource である必要があります」というエラーが表示されます。ありがとうございます!

これが私のコードです:

宗教VO

public class ReligionVO
{
    private string religionCode;

    public string ReligionCode
    {
        get { return religionCode; }
        set { religionCode = value; }
    }

    private string religion;

    public string Religion
    {
        get { return religion; }
        set { religion = value; }
    }
}

宗教DAO

public class ReligionDAO
{
    private DB db = new DB();

    public DataTable SelectAllReligion()
    {
        return db.GetData("SELECT * FROM Religions");
    }
}

宗教BLO

public class ReligionBLO
{
    private ReligionVO religionVO = new ReligionVO();
    private ReligionDAO religionDAO = new ReligionDAO();

    public DataTable SelectAllReligion()
    {
        return religionDAO.SelectAllReligion();
    }

    /* this is the code I tried to datasource to the Value Object
    public ReligionVO SelectAllReligion()
    {
        dt = religionDAO.SelectAllReligion();
        foreach (DataRow dr in dt.Rows)
        {
            religionVO.ReligionCode = dr["religion_code"].ToString();
            religionVO.Religion = dr["religion"].ToString();
        }
        return religionVO;
    }
    */
}

ASPX

ddlReligion.DataSource = religionBLO.SelectAllReligion();
ddlReligion.DataValueField = "religion_code";
ddlReligion.DataTextField = "religion";
ddlReligion.DataBind();

エラーメッセージのスクリーンショットは次のとおりです。 ReligionVO は無効なデータ ソースです

4

1 に答える 1

2

メソッド宣言は正しいです。問題は、実際のメソッドの実装にあります。DataTableこの行で戻り値の型として指定しました:

public DataTable SelectAllReligion()
    {
        return religionDAO.SelectAllReligion();
    }

そして、実際のメソッドの実装(質問のコメント付きコード)では、これを使用しています:

public ReligionVO SelectAllReligion()
    {
       //your logic
        return religionVO;
    }

ReligionVO上記のコードを に置き換えて、 の代わりにオブジェクトDataTableを返すだけです。このような :dtreligionVO

public DataTable SelectAllReligion()
{
    //your logic
    return dt;
}

お役に立てれば。

于 2015-05-25T09:43:48.217 に答える