Propagating information from DAL to UIPropagating information from DAL to UI
Old forum URL: forums.lhotka.net/forums/t/6435.aspx
Katani posted on Tuesday, February 17, 2009
I want to ask if there is a way to inform UI that specific property should be edited using specified control.
Lets say i have a Person object. Person have Status property which in database is stored in separate table. I want to ask is there a way to set something i Person object which will tell UI to edit Status using combobox in which list will be filled with Status objects?
Antonio Sandoval replied on Tuesday, February 17, 2009
If you have something Like This
Table Person
PersonID (PK)
Table PersonStatus
PersonID (PK)
StatusID
Table Status
StatusID (PK)
StatusName
In your BO you can have something like this
Person : BusinesBase{
int _PersonID;
PersonStatus _PersonStatus;
public PersonStatus PersonStatus{
get{
return _PersonStatus;
}
}
public Person GetPerson(int PersonID){
DataPortal<Person>.Fetch(new Criteria(PersionID));
}
private Person(){
_PersonStatus=PersonStatus.NewPersonStatus(); //Status by default
}
internal Fetch(SafeDataReader dr){
}
DataPortal_Fetch(Criteria )
{
using(DBManager db =new DBManger(connectionString)){
db.Parameters.Clear();
db.AddParameter("@PersonID",criteria.PersonID);
SafeDataReader dr = db.GetDataReader();
Fetch(dr);
dr.NextResult();
_PersonStatus.Fetch(dr,db);
}
}
[Transactional(TransactionScope)]
DataPortal_Update(){
using(DBManager db =new DBManger(connectionString)){
Update your person in database
_PersonStatus.Update(this,db);//Using the same connection for TransactionScope
}
}
}
[Transactional(TransactionScope)]
DataPortal_Insert(){
using(DBManager db =new DBManger(connectionString)){
Update your person in database
_PersonStatus.Insert(this,db);//Using the same connection for TransactionScope
}
}
}
PersonStatus : BusinesBase
int _PersonID;
string StatusID;
internal Update(Person myperson,DBManager db){
_PersonID =myperson.PersonID;
Update in database
}
internal void Insert(Person myperson,DBManager db){
_PersonID=myperson.PersonID;
insert data;
}
internal void Fetch(SafeDataReader dr){
Fill yours properties;
}
}
Status: BusinessBase {
public string StatusID {
}
public string StatusName{
}
}
StatusList: BussinesListBase {
}
So now for the databindings in your WinForm or in ASP controls:
Person myperson = Person.GetPerson(1);
personBindingSource.DataSource=myperson;
personStatusBindingSource.dataSource=personBindingSource;
personStatusBindingSource.DataNember="PersonStatus";
statusListBindingSource.DataSource=StatusList.GetStatusList();
cboPersonStatus.DataSource=statusListBindingSource;
cboPersonStatus.ValueMember="StatusID";
cboPersonStatus.DisplayMember="StatusName";
cboPersonStatus.DataBindings.Add("ValueMember",personStatusBindingSource,"StatusID");
Following the example of projecttracker is so easy to make this effort. DBManager is my DAL.
Copyright (c) Marimer LLC