在sqlserver中我有两个表:'Employee'
和'PayType'
,
'PayType'
字段为:
1. PayTypeId int.
2. PayTypeName nvarchar(15).
和'Employee'
文件是:
1. EmpId int.
2. Name nvarchar(30).
由于每个员工都可以有多个PayType,因此我添加了一个'PayTypeIds'
字段nvarchar(50)
数据类型,其中存储了paytypeids - PayTypeId和','
分隔符 - 。
在C#WPF应用程序中我添加了一个列表框:
<ListBox x:Name="lstPayType" ItemsSource="{Binding PayTypeList}" Width="194" HorizontalAlignment="Left"
Margin="471,314,0,0" Height="86" VerticalAlignment="Top">
<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Content="{Binding PayTypeName}">
</CheckBox>
</StackPanel>
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在我的问题是这些:
谢谢你'RredCat'
请假设我们有两名员工:{100,'Joe'} ,{101,'Frank'}
并且有三种PayTypes:{200,'Hourly'},{201,'Weekly'},{202,'Mounthly'}
并且第一个emplyoo有两个paytypeid所以我们有:{100,'joe','200,201'}
对于第二位员工:{101,'Frank','200,201,202'}
现在有了以上数据,我可以向您解释如何处理您的答案?
答案 0 :(得分:0)
我认为你使用糟糕的方法。
随你。
使用“名称”和“值”属性创建PayType实体。
对于Employee实体,创建属性List<PayType> PayTypeList
。将PayTypeIds中的数据映射到此属性。将列表框绑定到此属性,不带任何转换器。写下项目的下一个代码:
<CheckBox Content="{Binding Name}" IsChecked="{Binding Value, Mode=TwoWay}">
似乎最好为PayTypeIds属性使用带标记的枚举。