求助关于在三层结构中,用SqlDataAdapter调用存储过程填充combobox的问题!
大家好!
我试着做了一款记账软件,把每日的支出,收入记录下来.
想实现这么一个功能,在记账的模块中,有2个combobox,一个是选择这笔账是收入还是支出,另一个是选择类型,比如收入有工资,生意等,支出有饮食,交通等.后面的这个combobox需要等前一个combobox做出选择,即选择是收入还是支出后,从数据库中搜索数据,并且填充.
我在数据库中写了个存储过程,是查询收入类型有哪些的.如下:
create proc SelectCBoxItemsIncome
AS
select IncomeName from Income
GO
然后在Model层有个comboBoxHelper类,里面有个属性,ItemName,用来存储第一个combobox选择的值.
在DAL数据访问层中,有个comboBoxBind类,里面有个查询的方法,如下:
public DataSet SelectCBoxItems(comboBoxHelper cbh)
{
DataSet ds = null;
if (cbh.ItemName == "收入")
{
comm = new SqlCommand();
da = new SqlDataAdapter();
da.SelectCommand = comm;
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "SelectCBoxItemsIncome";
da.SelectCommand.CommandType = CommandType.StoredProcedure;
conn.Open();
ds = new DataSet();
da.Fill(ds);
Close(); //继承自DBHelper类,关闭连接的方法
}
return ds;
}
然后我在第一个combobox(Name是cbxshouruhuozhichu)的SelectedIndexChanged事件中,写了如下代码:(cbxxiang是第二个combobox的Name属性)
comboBoxHelper cbh = new comboBoxHelper();
cbh.ItemName = cbxshouruhuozhichu.Text;
comboBoxBind cbb = new comboBoxBind();
cbxxiang.DataSource = cbb.SelectCBoxItems(cbh);
这段代码是根据前一个combobox做出的选择自动从数据库查询对应数据并帮顶,但实际效果是,选择了"收入"之后,第二个combobox就一行数据:System.Data.DataViewManagerListItemTypeDescriptor
请问该如何解决问题?谢谢!
------解决方案--------------------
显示System.Data.DataViewManagerListItemTypeDescriptor证明没有取到对应的值,你检查一下数据库取值有没有问题