SilverLight C#中char(1)数据类型页面显示解决办法(讨论)
2011-04-13 15:53
627 查看
背景
在目前很多项目中为了实现数据库的可移植性性,把我们常见的byte数据类型改为了char(1)数据类型。。。
在页面显示的时候,就比较难处理了。数据读出之后变为杯具的string型,显示在界面上 感觉光秃秃的。。。
而且在绑定CheckBox等只有两种状态的控件时,转换时比较困难。。。
因此,我们就会想 是不是可以把他在界面上显示的时候变为是或否,在增加的时候变为bool值,使他能够绑定CheckBox???
对策
有人会说 在读取数据的时候,把他判断一下不就得了呀。。。
问题是:我们现在有三种类型,不!应该叫状态。。。string型的“是”/“否”、true/false、string类型的“1”/“0”
三个状态。。。在数据读取的时候转化有点纠结。。。。
我的方案
可以从类的属性下手。。。。
为string的“1”/“0”建立两个辅助属性,一个是string类型一个是bool类型。。。
在绑定的时候,需要那个就绑定那个属性。。。不用再费力的判断。。。
保存到数据库的属性不变。。。还是为“1”/“0”
看代码:
C#
界面绑定
界面绑定
保存的时候保存,他的原值属性即可。。。
效果预览:
作者:记忆逝去的青春
出处:http://www.cnblogs.com/lukun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过http://www.cnblogs.com/lukun/ 联系我,非常感谢。
在目前很多项目中为了实现数据库的可移植性性,把我们常见的byte数据类型改为了char(1)数据类型。。。
在页面显示的时候,就比较难处理了。数据读出之后变为杯具的string型,显示在界面上 感觉光秃秃的。。。
而且在绑定CheckBox等只有两种状态的控件时,转换时比较困难。。。
因此,我们就会想 是不是可以把他在界面上显示的时候变为是或否,在增加的时候变为bool值,使他能够绑定CheckBox???
对策
有人会说 在读取数据的时候,把他判断一下不就得了呀。。。
问题是:我们现在有三种类型,不!应该叫状态。。。string型的“是”/“否”、true/false、string类型的“1”/“0”
三个状态。。。在数据读取的时候转化有点纠结。。。。
我的方案
可以从类的属性下手。。。。
为string的“1”/“0”建立两个辅助属性,一个是string类型一个是bool类型。。。
在绑定的时候,需要那个就绑定那个属性。。。不用再费力的判断。。。
保存到数据库的属性不变。。。还是为“1”/“0”
看代码:
C#
/// <summary> /// 采购类型默认值(new) /// </summary> public string PurType_DefaultFlag { set; get; } public string DefaultFlagString { get { _defaultflagstring = PurType_DefaultFlag == "0" ? "是" : "否"; return _defaultflagstring; } set { _defaultflagstring = value; PurType_DefaultFlag = value == "是" ? "0" : "1"; } } public bool DefaultFlagBool { get { _defaultflagbool = PurType_DefaultFlag == "0" ? true : false; return _defaultflagbool; } set { _defaultflagbool = value; PurType_DefaultFlag = value ? "0" : "1"; } }
界面绑定
<sdk:DataGrid AutoGenerateColumns="False" Name="dgSettType" Margin="5" ItemsSource="{Binding PurTypeList}" SelectedItem="{Binding PurTypeModel}" IsReadOnly="True"> <sdk:DataGrid.Columns> <sdk:DataGridTextColumn Header="采购类型名称" Binding="{Binding PurType_Name}"/> <sdk:DataGridTextColumn Header="采购类型默认值" Binding="{Binding DefaultFlagString}"/> <sdk:DataGridTextColumn Header="排序列" Binding="{Binding R_OrderSN}" /> <sdk:DataGridTextColumn Header="说明" Binding="{Binding PurType_Remark}"/> </sdk:DataGrid.Columns> </sdk:DataGrid>
界面绑定
<sdk:Label Content="采购类型名称:" Style="{StaticResource labStyle}"/> <Controls:TextBoxEx AllowEmpty="False" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.PurType_Name,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}"/> <sdk:Label Grid.Row="1" Content="采购类型默认值:" Style="{StaticResource labStyle}"/> <CheckBox x:Name="chks" Grid.Row="1" Grid.Column="1" Margin="5,15,0,0" IsChecked="{Binding DefaultFlagBool,Mode=TwoWay}" <sdk:Label Grid.Row="2" Content="排序列:" Style="{StaticResource labStyle}"/> <TextBox Grid.Row="2" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.R_OrderSN,Mode=TwoWay}"/> <sdk:Label Grid.Row="3" Content="备 注:" Style="{StaticResource labStyle}"/> <TextBox Grid.Row="3" Grid.Column="1" Style="{StaticResource txtStyle}" Text="{Binding PurTypeModel.PurType_Remark,Mode=TwoWay}"/>
保存的时候保存,他的原值属性即可。。。
效果预览:
作者:记忆逝去的青春
出处:http://www.cnblogs.com/lukun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过http://www.cnblogs.com/lukun/ 联系我,非常感谢。
相关文章推荐
- 数据库数据为0.9,展示到页面显示为.9解决办法
- 转C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法
- iview框架中文本类型的数据导出excel后以科学记数法显示的解决办法
- 解决java中/jsp页面中 Double类型数据完全显示、不再以科学技术法显示
- C#与SQL Server之间的数据类型对比及在VS2003+中空值传递的解决办法
- 用ajax获得数据,可是页面显示的时不加个alert就显示不出来,随意加个alert就可以 解决办法
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法(上)
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法(下)
- JSP中EL表达式int类型的数据显示为零,解决办法
- C#与SQL Server之间的数据类型对比及在VS2003中空值传递的解决办法
- C#与SQL Server之间的数据类型对比及在VS2005中空值传递的解决办法
- <问题解决>数据库date类型数据前端页面显示格式不正确问题
- c# asp.net 使用kindeditor在服务器上不能显示上传图片的页面等解决办法
- [转]C# post数据时 出现如下错误: System.Net.WebException: 远程服务器返回错误: (417) Expectation Failed 的解决办法
- IE中由于缓存导致页面数据不能及时更新的解决办法
- 关于RecyclerView只显示一行数据的另类解决办法
- Spring @ResponseBody只能返回String类型数据解决办法
- 关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法
- ScrollView嵌套ListView时ListView只显示出一行数据的解决办法