求助关于在三层结构中,用SqlDataAdapter调用存储过程填充combobox的问题!

ymim2005 2012-05-12 08:12:49
大家好!
我试着做了一款记账软件,把每日的支出,收入记录下来.
想实现这么一个功能,在记账的模块中,有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


请问该如何解决问题?谢谢!

...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymim2005 2012-05-12
  • 打赏
  • 举报
回复
问题解决了,确实是没有取到值
原因是给dataset赋值的时候没有加Table.按理说如果dataset只有一个表,是可以省略后面table的,但不知道为啥这次就是不行
再就是没有指定ValueMember和DisplayMember的值...
晕啦~~~
doubleu2005 2012-05-12
  • 打赏
  • 举报
回复
显示System.Data.DataViewManagerListItemTypeDescriptor证明没有取到对应的值,你检查一下数据库取值有没有问题

110,560

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧