北大青鸟鲁广校区

北大青鸟鲁广校区

  • 北大青鸟徐东校区
  • 北大青鸟光谷校区
  • 北大青鸟宏鹏IT校区
  • 荆州青鸟之家
  • 襄阳青鸟之家

15902769092

百日千才

WPF与ASP.NET数据控件绑定数据的区别-武汉北大青鸟net培训

2013-11-09 12:19来源:武汉北大青鸟鲁广校区作者:武汉北大青鸟

  WPF与ASP.NET数据控件绑定数据的区别在哪里?武汉北大青鸟鲁广校区.net培训将为大家阐述,该记录为随笔,为抛砖引玉。

        或许很多新手会发现 WPF中 ComboBox绑定数据时没有办法制定 VALUE,甚至ComboBox里根本就没有这个属性,那么难道我们只能得到选择后的文本或者Content里的东西吗?要对应数据里的关键字列怎么办?

  还有,无论是在ListView,还是第三方的DataGrid在绑定数据之后,要获得某行某列的数据似乎也没有办法,因为这些控件里行列的集合并找到对应的方法来获得节点树上的控件对象的值。

  做惯了ASP.NET的开发员,突然遇到这样的情况会很迷茫

  其实,WPF做得更彻底。

  一个小实验

  在ComboBox或者ListView里绑定好数据之后,添加一个SelectedIndexChanged事件或其他什么事件,随便。

  然后在处理函数里

  MessageBox.Show ( DataBindListControl.SelectedItem); //大部分数据绑定控件都有的这个已选项属性

  或

  MessageBox.Show ( DataBindListControl.SelectedValue.ToString()); //如果数据控件是ComboBox也可以用SelectedValue这个属性

  你会发现,弹出来的字符串是你的数据源的项类型,例如数据源是HashTable的话 将看到显示的是这个类型System.Collections.DictionaryEntry类型的字符串

  如果是DataView的话,显示的是DataRowView类型的字符串

  所以,在WPF里不同于在ASP.NET

  WPF直接将数据控件的项直接被绑定成数据源的项,并且连类型都一样。

  而ASP.NET中,控件会将数据源的项转换成他自己的ITEM的项,所以,我们在ASP.NET需要通过数据控件的类似ITEM的属性或下级属性来获取其中的每一项的值

  而在WPF中,我们在直接获得数据控件的项以后,可以直接转换成数据源的项类型后直接使用。

  例如

  ((DataRowView)DataBindListControl.SelectedItem)["Name"].ToString();

  如果你的数据源是一个DataView,这句代码将直接获得被选择的项的Name字段的值,因为这个项其实就是你的数据源的项,所以就得到了被选择的这个项所对因的数据源里的Name字段里的数据。即使Name字段可能没有被绑定显示在数据控件上,但是他是是在存在的,所以并不取决于数据控件是否绑定显示过该字段,而取决于数据源是否有该字段。

  另外,提一点,ComboBox控件中设置绑定字段的属性是DisplayMemberPath,值是字符串类型,描述数据路径就可以了

  例如 ComboBox.DisplayMemberPath=“Name”;

  设置 SelectedValuePath 后可以通过 SelectedValue获得绑定的数据对象的对应字段值,这一点类似WEB的DropDownList,稍微有点区别。

  例如 默认绑定值可以这样设置

  ComboBox.SelectedValuePath = "Key";

  ComboBox.SelectedValue = “03”;

  同时需要注意,在未设置SelectedValuePath 的情况下,SelectedValue 和SelectedItem是一样的,如果设置了SelectedValuePath那么SelectedValue就是指定的对象字段了。

  ListView等其他控件也同理。

        是否看懂了呢?武汉北大青鸟鲁广校区net培训课程报名咨询电话:15902769092。

关闭

只为了方便您就学 北大青鸟鲁广校区 北大青鸟鲁广校区

武汉市洪山区珞喻路724号(地铁二号线光谷广场站F口出)

全真项目实战 入学签就业协议

Copyright (c) 2006-2020 武汉宏鹏职业培训学校 版权所有 All Rights Reserved.