SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解

SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解无论在 Winform WPF ASP NET 中 数据绑定是我们经常使用的一个重要技术 我们经常会把相关类动态显示绑定到 UI 界面中 其中有几个比较重要的属性需要大家灵活运用 那 Combox 来说明有两个属性 DisplayMembe 和 SelectedValu 前者是显示控件中每个元素 Item 的属性 即你想把类中的哪个属性显示出来 就用这个关键字 Display

      无论在Winform、WPF、ASP.NET中,数据绑定是我们经常使用的一个重要技术,我们经常会把相关类动态显示绑定到UI界面中,其中有几个比较重要的属性需要大家灵活运用。

     那Combox来说明有两个属性DisplayMemberPath和SelectedValuePath,前者是显示控件中每个元素Item的属性,即你想把类中的哪个属性显示出来,就用这个关键字DisplayMemberPath,而SelectedValuePath表示在combox中选中Item的值是类中的哪个属性,即每个Item的SelectedValue的值,比如一个学生类
class student
{

    public int id;
    public string name;
}
一般情况下ComboBox.Itemsource=StudentList设置完之后,再设置ComboBox.DisplayMemberPath=”name”;ComboBox.SelectedValuePath=”id”;
这样每个combobox的item的value就是id,但它显示出来的是name,当然类似的ListBox等也可以运用这些属性。














     现在那我写过的一个小项目说明一个比较复杂的绑定,项目中有两个类Employee、Department,我们知道每位员工都有他所属的部门,没个部门都有若干的员工。

 

    SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解

 

 

SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解

 

在项目中我们通过一些特定的条件进行搜索将搜索出来的Employee绑定到一个DataGrid上,我的意思是说想通过Employee表中的DepartmentId这个表示列,从Department表中查询并返回Name属性显示到DataGrid的列上去。

Employee:

 

 1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Threading.Tasks;  6  7 namespace HR.Model  8 {  9 public class Employee  10  {  11 public Guid Id  12  {  13 get;  14 set;  15  }  16  17 ///   18 /// 部门Id  19 ///   20 public Guid DepartmentId  21  {  22 get;  23 set;  24  }  25  26 //剩下的暂不需要看  27  28 ///   29 /// 工号  30 ///   31 public string Number  32  {  33 get;  34 set;  35  }  36  37 public string Name  38  {  39 get;  40 set;  41  }  42  43 ///   44 /// 性别Id  45 ///   46 public Guid GenderId  47  {  48 get;  49 set;  50  }  51  52 //因为图片如果一次性读取到Model中会非常耗内存,因此需要的时候再去单独读取,不在Model中建字段  53  54 ///   55 /// 出生日期  56 ///   57 public DateTime BirthDay  58  {  59 get;  60 set;  61  }  62  63 ///   64 /// 入职日期  65 ///   66 public DateTime InDate  67  {  68 get;  69 set;  70  }  71  72 ///   73 /// 婚姻状态Id  74 ///   75 public Guid MarriageId  76  {  77 get;  78 set;  79  }  80  81 ///   82 /// 政治面貌Id  83 ///   84 public Guid PartyStatusId  85  {  86 get;  87 set;  88  }  89  90 ///   91 /// 民族  92 ///   93 public string Nationality  94  {  95 get;  96 set;  97  }  98  99 ///  100 /// 籍贯 101 ///  102 public string NativeAddr 103  { 104 get; 105 set; 106  } 107 108 ///  109 /// 教育程度Id 110 ///  111 public Guid EducationId 112  { 113 get; 114 set; 115  } 116 117 ///  118 /// 专业 119 ///  120 public string Major 121  { 122 get; 123 set; 124  } 125 126 ///  127 /// 毕业院校 128 ///  129 public string School 130  { 131 get; 132 set; 133  } 134 135 ///  136 /// 地址 137 ///  138 public string Address 139  { 140 get; 141 set; 142  } 143 144 ///  145 /// 基本工资 146 ///  147 public int BaseSalary 148  { 149 get; 150 set; 151  } 152 153 ///  154 /// Email 155 ///  156 public string Email 157  { 158 get; 159 set; 160  } 161 162 ///  163 /// 有效身份证号 164 ///  165 public string IdNum 166  { 167 get; 168 set; 169  } 170 171 ///  172 /// 联系电话 173 ///  174 public string TelNum 175  { 176 get; 177 set; 178  } 179 180 ///  181 /// 紧急联系人信息 182 ///  183 public string EmergencyContact 184  { 185 get; 186 set; 187  } 188 189 190 ///  191 /// 职位 192 ///  193 public string Position 194  { 195 get; 196 set; 197  } 198 199 ///  200 /// 合同起始时间 201 ///  202 public DateTime ContractStartDay 203  { 204 get; 205 set; 206  } 207 208 ///  209 /// 合同到期时间 210 ///  211 public DateTime ContractEndDay 212  { 213 get; 214 set; 215  } 216 217 ///  218 /// 简历 219 ///  220 public string Resume 221  { 222 get; 223 set; 224  } 225 226 ///  227 /// 备注 228 ///  229 public string Remarks 230  { 231 get; 232 set; 233  } 234 235 public byte[] Photo 236  { 237 get; 238 set; 239  } 240  } 241 }

 

Department类:

 

 1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Threading.Tasks;  6  7 namespace HR.Model  8 {  9 public class Department 10  { 11 public Guid Id 12  { 13 get; 14 set; 15  } 16 17 public string Name 18  { 19 get; 20 set; 21  } 22  } 23 }

 

 

UI界面:

SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解

 

在UI界面中的代码:

1 
   
     " 
    部门 
    " Width= 
    " 
    100 
    " SelectedValueBinding= 
    " 
    {Binding DepartmentId} 
    " SelectedValuePath= 
    " 
    Id 
    " 
    2 DisplayMemberPath= 
    " 
    Name 
    " x:Name= 
    " 
    columnDepartmentId 
    "> 
   

这块是将DataGrid的某一个数据列(ComboxColumn类型的列),普通的DataTextColum无法完成负责的绑定。

将SelectedValueBinding绑定到DepartmentId,因为我们通过搜索返回的是Employee类型,而Employee对象中有DepartmentId属性,然后SelectedValuePath=Id表示我们是通过Id这个关键字进行搜索,搜索Department中的Id属性,然后以Name属性进行显示。

 

 

 

 

 我们在窗体的Window_Loaded方法中初始化控件,把所有数据库中的Department对象绑定到控件DataGrid中的ComboxColumn中。

后台代码:

SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解

然后通过点击搜索按钮的点击事件对DataGrid控件进行再次绑定。

后台代码:

大家只看最后一句就行,即通过点击把一些搜索条件记录下来,然后进行Sql select操作,然后返回特定的Employee对象。

SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解

 

转载于:https://www.cnblogs.com/magicyu/p/3273389.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219568.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:16
下一篇 2026年3月17日 下午10:16


相关推荐

  • Linux磁盘扩容 之 LVM 扩容之路

    Linux磁盘扩容 之 LVM 扩容之路引言众所周知,我们大多数服务都是跑在Linux上的,因为Linux命令行形式的特性,也导致了很多开发者只喜欢把Linux当做跑服务的机器,并不作为日常的使用。这样导致了我们只能记得常用的部署命令,但遇到一些复杂的Linux运维就不知如何下手了。这不,我这两天就遇到了服务器磁盘不足的问题,一开始只想Google一下快速搞定,结果还是得补补Linux中LVM的这块知识点才可以。为了方便后人快速扩容,特此记录。LVM是什么LVM(LogicalVolumeManager)翻译过来是逻辑卷管理器,大家可

    2022年6月20日
    31
  • AlertDialog.Builder setPositiveButton 点击时不关闭dialog

    AlertDialog.Builder setPositiveButton 点击时不关闭dialogAlertDialog.BuildersetPositiveButton 与 setNegativeButton点击时都会自动关闭dialog,但是文本控制不想其关闭两种方法①:LayoutInflater inflater=LayoutInflater.from(mActivity);Viewview=inflater.inflate(R.layout.

    2022年6月16日
    35
  • DDD领域驱动设计详解

    DDD领域驱动设计详解DDD 领域驱动设计 1 领域驱动设计 1 1 什么是领域驱动设计 1 2 为什么用领域驱动设计 2 DDD 核心知识体系 2 1DDD 核心概念 2 2DDD 战略战术设计 2 2 1DDD 战略设计 2 2 1DDD 战术设计 3 DDD 微服务架构模型 3 1 基本架构 3 1 1DDD 分层架构 3 1 1 六边形理论 3 1 1CQRS 架构设计 3 2 代码结构 3 3 服务调用 1 领域驱动设计 1 1 什么是领域驱动设计领域驱动设计 DomainDriven 是一种从系统分析到软件建模的一套方法论

    2026年3月19日
    2
  • Java框架介绍

    Java框架介绍Java框架介绍

    2022年4月22日
    43
  • yum 安装vsftp_yum安装vsftp「建议收藏」

    yum 安装vsftp_yum安装vsftp「建议收藏」1、安装vsftp,本文采用yum安装:#yuminstallvsftpd2、安装后运行:#servicevsftpdrestartShuttingdownvsftpd:[OK]Startingvsftpdforvsftpd:[OK]3、新增加系统用户ftptest:#useradd-d/var/www-s/sbin/nologinftptest//增加新用…

    2025年12月4日
    7
  • 详解Java虚拟机[通俗易懂]

    详解Java虚拟机[通俗易懂]JAVA虚拟机

    2022年7月8日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号