我为WCF服务设置了5个项目,用于不同的层,如DAL,桌面,模型,界面和服务。 BAL使用来自DAL的存储过程来检索存储在数据库中的数据。如何从服务中的BAL调用数据库列表,以在下拉列表中的表单上显示数据。
这是我的BAL:
public class GenderBAL
{
public Genders GetGenders(Int32 id)
{
Genders item = null;
using (GenderTableAdapter ad = new GenderTableAdapter())
{
using (mHotRes.DAL.dstGender.GenderDataTable tbl = new DAL.dstGender.GenderDataTable())
{
ad.GetGendersInfo();
if(tbl.Rows.Count == 1)
{
mHotRes.DAL.dstGender.GenderRow row = tbl[0];
item = new Genders();
item.GenderId = row.GenderId;
}
}
}
return item;
}
}
}
这是我的表格:
private void FillLookups()
{
try
{
IHotRes res = new MHotServiceProvider().Service;
ddlGender.DataSource = res.GetGenders(1);
ddlGender.DataSource = "Gender";
}
catch(Exception ex)
{
MessageHelper.ShowErrorMessage(ex);
}
答案 0 :(得分:0)
您没有尝试检索您尝试从数据库中检索列表的ID,这就是为什么代码对于BAL应该是这样的:
public class GenderBAL
{
public List<Genders> GetGenderList()
{
List<Genders> gender = null;
Genders itm = null;
using (GenderTableAdapter adp = new GenderTableAdapter())
{
using (DAL.dstLookup.GenderDataTable tbl = adp.GetGenderDataList())
{
if(tbl.Count>0)
{
gender = new List<Genders>();
foreach(var row in tbl)
{
itm = new Genders();
itm.GenderId = row.GenderId;
itm.Gender = row.Gender;
gender.Add(itm);
}
}
}
}
return gender;
}
}
}
同时将所有图层更改为您使用Genders GetGenders(Int32 id)
的位置,以获取上述列表。
对于桌面图层也调用列表并记住组合框需要设置三个属性ValueMember
,DisplayMember
和DataSource
。下次在使用它们之前阅读不同的属性。表单的代码应为:
IHotRes res = new MHotServiceProvider().Service;
ddlGender.ValueMember = "GenderId";
ddlGender.DisplayMember = "Gender";
ddlGender.DataSource = gender;