A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贰的23次方 中级黑马   /  2014-3-22 10:29  /  1666 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 贰的23次方 于 2014-3-22 18:09 编辑

1.我在数据库中建好了两张表Info(ID,Name,Category)和Employee(ID,Name,GenderId)
Info表中有如下记录(1,男,性别)(2,女,性别)
Employee表中记录如下(1,张三,2)(2,李四,1)(3,王五,2)
2.在窗口加载时,我用DataGrid控件把Employee表中的成员都显示出来如下(1,张三,女)性别字段显示的不是ID,而是Name

问题:DataGrid地列控件应该怎么绑定?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

8 个回复

倒序浏览
不明白楼主说的意思,楼主是打算怎么显示数据?是想显示genderId么?
回复 使用道具 举报
百川 发表于 2014-3-22 11:03
不明白楼主说的意思,楼主是打算怎么显示数据?是想显示genderId么?

想在窗口加载时显示(1,张三,女)
回复 使用道具 举报
本帖最后由 百川 于 2014-3-22 12:14 编辑

使用left join语句
Select e.ID as ID,e.Name as Name,c.Name as Sex from 员工表 e left join 性别表 c on e.GenderId=c.ID


得到结果是一张新的表,然后用视频里面的sqlHelper的datatable方法查一下就行了。
不行的话你把源码发一下我给你改
回复 使用道具 举报
你判断一下 如果是2就显示女,1就显示男
回复 使用道具 举报
窗口中数据绑定时,你可以使用DataGrid中的DataGridComboBoxColumn列,它可以让数据绑定的是Employee的GenderId属性,但是显示的是Info表中的Name属性。
DataGrid部分的代码如下:
  1.             <DataGrid AutoGenerateColumns="False" IsReadOnly="True" Name="dataGrid">
  2.                 <DataGrid.Columns>
  3.                     <DataGridTextColumn Header="编号" Binding="{Binding Id}" Width="70"></DataGridTextColumn>
  4.                     <DataGridTextColumn Header="姓名" Binding="{Binding Name}" Width="70"></DataGridTextColumn>
  5.                     <DataGridComboBoxColumn x:Name="cbGender" Header="性别" Width="40" SelectedValueBinding="{Binding GenderId}"  DisplayMemberPath="Name" SelectedValuePath="Id"></DataGridComboBoxColumn>
  6.                 </DataGrid.Columns>
  7.             </DataGrid>
复制代码

其中,ComboBoxColumn的SelectedValueBinding绑定的是Employee对象的GenderId, DisplayMemberPath和SelectedValuePath的值分别的是Info表查询出的Name和Id。

前台事件里的部分代码如下:
  1. cbGender.ItemsSource = new IdNameDAL().GetByCategory("性别");
复制代码

在窗口加载时,你得先通过GetByCategory从数据库Info表中查出来是性别的数据条目,它的返回值可以是一个List或数组。
然后将员工的数据给dataGrid的ItemsSource,这样,控件已经设定好的绑定就能将数据显示出来了
  1. Employee[] emps = new EmployeeDAL().ListAll();
  2.             dataGrid.ItemsSource = emps;
复制代码

代码没测试过,你自己测试一下
回复 使用道具 举报
去控件属性中自己配置一下就可以啦
回复 使用道具 举报
zou5268237 发表于 2014-3-22 12:49
你判断一下 如果是2就显示女,1就显示男

这个有点麻烦了,如果类别是学历,记录如下
(3,小学,学历)
(4,中学,学历)
……
(7,博士,学历)
不够灵活
回复 使用道具 举报
百川 发表于 2014-3-22 11:50
使用left join语句
Select e.ID as ID,e.Name as Name,c.Name as Sex from 员工表 e left join 性别表 c on ...

感谢回答,这个方法,还看起来可以实现,但是我想要的是
.NET视频第五季(二)员工表增删改的那种效果,感谢回答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马