2015-05-25 52 views
1

我的應用程序使用三層架構構建。不過,我希望下拉列表將數據源提供給Value Object類。目前,我從數據訪問層 - >業務邏輯層 - >表示層數據源數據下拉列表。但我想要從Value對象中將數據源數據化。因此,我想要的是從數據訪問層 - >值對象 - >業務邏輯層 - >表示層(下拉)。我試圖將其數據源賦值給value對象,但它給了我「錯誤的數據源;必須是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

+0

評論的代碼是拋出錯誤? –

+0

DataSource必須是實現IListSource,IDataSource或IEnumerable的類型。 我沒有看到任何錯誤是您未評論的代碼邏輯。 –

+0

@AmitKumarGhosh註釋代碼拋出錯誤。未註釋的代碼是我當前的代碼,可以正常工作,但我想知道是否有辦法讓註釋代碼正常工作。 –

回答

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

希望這會有所幫助。

+0

ReligionBLO有一個定義的方法應該足夠 –

+1

這就是我指出的。 OP需要直接返回該方法結果,因爲它的'DataTable'返回類型。 –

+0

@HarveySpecter感謝您的回答,但不是您的代碼與ReligionBLO中評論代碼的頂部代碼類似嗎?未註釋的代碼是我當前正常工作的代碼。但是我希望將下拉列表轉換爲數值源,並且不執行數據訪問對象。 –

相關問題