我的应用程序是使用三层架构构建的。但是,我希望数据源的下拉列表到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();
以下是错误消息的屏幕截图:
答案 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;
}
希望这有帮助。