您的位置:首页 > 编程语言 > C#

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#

/// <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/ 联系我,非常感谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐