2015-05-25 6 views
1

Мое приложение построено с трехуровневой архитектурой. Тем не менее, я хочу, чтобы dropdownlists были источником данных для класса Value Object. В настоящее время я использую данные для списков dropdownlists из уровня доступа к данным -> Business Logic Layer -> Presentation Layer. Но я хочу переназначить списки из объекта Value. Поэтому, я хочу, это от уровня доступа к данным -> объект значения -> уровень бизнес-логики -> уровень представления (выпадающий список). Я попытался передать его объекту value, но он дал мне ошибку «Недопустимый источник данных: должен быть типа IListSource, IEnumerable или IDataSource». Спасибо вам!Dropdownlist DataSource для объекта Value

Вот мой код:

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

РелигияBLO имеет определенный метод, который должен быть достаточным –

+1

То, что я указал. OP должен напрямую возвращать этот результат метода с момента возврата типа DataTable. –

+0

@HarveySpecter Спасибо за ваш ответ, но не ваш код похож на мой код, который является верхней частью прокомментированного кода в ReligionBLO? Безкомментированный код - это мой текущий код, который работает правильно. Но я хочу, чтобы раскрывающийся список был источником данных для объекта Value и не выполнял объект доступа к данным. –

Смежные вопросы