WPF combobox数据绑定问题

DeepOceanDream 2017-08-11 10:43:40
设置combobox绑定了数据库中的表
前台:<ComboBox x:Name="cbokemu" Margin="0,-25,0,0" Width="120" Height="24" SelectionChanged="cbokemu_SelectionChanged" />
后台:在构造函数中通过GetData()来进行combobox和数据库之间的绑定
SqlConnection cn = new SqlConnection("Initial Catalog=shitiku;Data Source=(local);Integrated Security=SSPI;");
private void GetData()
{
SqlCommand cm = cn.CreateCommand();
cm.CommandText = "select 科目名称 from kemu";
DataSet dtt = new DataSet();
SqlDataAdapter ada = new SqlDataAdapter(cm);
ada.Fill(dtt);
cbokemu.ItemsSource = dtt.Tables[0].DefaultView;
cbokemu.SelectedValuePath = "科目编号";
cbokemu.DisplayMemberPath = "科目名称";
}
现在问题是,程序没有报错,但是获取不到selectvalue科目编号,下拉列表正常显示科目名称,在调试的时候显示错误:
System.Windows.Data Error: 40 : BindingExpression path error: '类型编号' property not found on 'object' ''DataRowView' (HashCode=36805861)'. BindingExpression:Path=类型编号; DataItem='DataRowView' (HashCode=36805861); target element is 'ComboBox' (Name='cboleixing'); target property is 'NoTarget' (type 'Object')
线程 0x18d0 已退出,返回值为 259 (0x103)。
线程 0x1d6c 已退出,返回值为 259 (0x103)。
...全文
318 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
乱臣贼子 2017-08-11
  • 打赏
  • 举报
回复
引用 7 楼 lcmsx 的回复:
兄弟,你先知道你绑定到ComboBox的数据源对象类型是什么,是:dtt.Tables[0].DefaultView,那你知道每一个显示出来的ComboBoxItem绑定的数据对象是什么么? 最好不要直接把Table绑定到数据源上去,除非你弄得明白绑定上去后,每一个数据是什么类型,该怎么绑定才这么用。。。
给你的一个解决方法是将Table数据转化为实体类,然后在绑定到ComboBox的数据源上去。就能简单明了的解决你这个问题。
乱臣贼子 2017-08-11
  • 打赏
  • 举报
回复
兄弟,你先知道你绑定到ComboBox的数据源对象类型是什么,是:dtt.Tables[0].DefaultView,那你知道每一个显示出来的ComboBoxItem绑定的数据对象是什么么? 最好不要直接把Table绑定到数据源上去,除非你弄得明白绑定上去后,每一个数据是什么类型,该怎么绑定才这么用。。。
exception92 2017-08-11
  • 打赏
  • 举报
回复
第二个报的错 修改方式同第一个。
exception92 2017-08-11
  • 打赏
  • 举报
回复
引用 3 楼 DeepOceanDream 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 类型编号字段不属于 kemu表吧,其它地方还有类型编号的绑定
我有两个combobox,属于同样的情况,这是第二个报的错,没看清不好意思 第一个报的错:System.Windows.Data Error: 40 : BindingExpression path error: '科目编号' property not found on 'object' ''DataRowView' (HashCode=30296325)'. BindingExpression:Path=科目编号; DataItem='DataRowView' (HashCode=30296325); target element is 'ComboBox' (Name='cbokemu'); target property is 'NoTarget' (type 'Object') 另外我cbokemu_SelectionChanged里面没有代码,请教里面应该要写些什么呢? [/quote] cm.CommandText = "select 科目名称 from kemu"; -》 只select 科目名称 ,改为 select 科目编号,科目名称 from kemu。 用到什么字段就select出来。
大然然 2017-08-11
  • 打赏
  • 举报
回复
你查的是 科目名称 cm.CommandText = "select 科目名称 from kemu"; 但你绑定的value又是 "科目编号"; 你不觉得少了什么吗
DeepOceanDream 2017-08-11
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
类型编号字段不属于 kemu表吧,其它地方还有类型编号的绑定
我有两个combobox,属于同样的情况,这是第二个报的错,没看清不好意思 第一个报的错:System.Windows.Data Error: 40 : BindingExpression path error: '科目编号' property not found on 'object' ''DataRowView' (HashCode=30296325)'. BindingExpression:Path=科目编号; DataItem='DataRowView' (HashCode=30296325); target element is 'ComboBox' (Name='cbokemu'); target property is 'NoTarget' (type 'Object') 另外我cbokemu_SelectionChanged里面没有代码,请教里面应该要写些什么呢?
exception92 2017-08-11
  • 打赏
  • 举报
回复
你检查 cbokemu_SelectionChanged 中的代码
exception92 2017-08-11
  • 打赏
  • 举报
回复
类型编号字段不属于 kemu表吧,其它地方还有类型编号的绑定

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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