Dropdownlist DataSource to Value Object

时间:2015-05-25 09:37:28

标签: c# asp.net object 3-tier three-tier

我的应用程序是使用三层架构构建的。但是,我希望数据源的下拉列表到Value Object类。目前,我正在从数据访问层获取数据下载列表 - >业务逻辑层 - >表达层。但我想从Value Object中对列表进行数据源。因此,我想要的是来自数据访问层 - >价值对象 - >业务逻辑层 - >表示层(下拉列表)。我试图将它数据源到值对象,但它给出了“无效数据源;必须是IListSource,IEnumerable或IDataSource类型”的错误。谢谢你!

这是我的代码:

ReligionVO

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

ReligionDAO

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

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

ReligionBLO

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 is an invalid data source

1 个答案:

答案 0 :(得分:2)

您的方法声明是正确的。问题在于实际的方法实现。您已在此行中指定DataTable作为返回类型:

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

在实际的方法实现(问题中的注释代码)中,您使用的是:

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

只需使用ReligionVO替换上述代码中的DataTable,然后返回dt对象,而不是religionVO。像这样:

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

希望这有帮助。