SilverLight中DataGrid显示值转换

我们在绑定数据到DataGrid时,考虑一下情况:例如有性别这个字段,我们在数据库以1和0代表男、女,那么我们怎么在绑定到DataGrid时把其改成男、女?有些朋友可能会想到查处数据后直接修改这个数据列表,这种方法可以,但是实现起来很复杂,这里我介绍一个简便的方法,充分利用客户端的运算能力,而不必把这些工作都交给服务端。

          这类实现了IValueConverter接口,也就具备了数据转换能力,如果传过来的值为1就返回男,如果不是就返回女,只是这个类还不能实现转换功能,我们看xaml端代码:

代码
///   <summary>
    
///  数据转换     ///   </summary>
     public   class  docConverter : IValueConverter
    {
        
public   object  Convert( object  value, Type targetType,  object  parameter, System.Globalization.CultureInfo culture)
        {
            
return  value ==1?"男":"女";
        }
        
public   object  ConvertBack( object  value, Type targetType,  object  parameter, System.Globalization.CultureInfo culture)
        {
            return value=="男"?1,0;
        
}
    }

 

 

 

代码
< sdk:DataGrid x:Name = " dgPatient_records "  Grid.Row = " 2 "  FontSize = " 13 "  AutoGenerateColumns = " False "  SelectionChanged = " dgPatient_records_SelectionChanged "   >
                
< sdk:DataGrid.Columns >
                    
< sdk:DataGridTextColumn Header = " 性别 "  FontSize = " 12 "  Binding = " {Binding sex, Converter={StaticResource sexConvert},Mode=TwoWay} " />
                 </ sdk:DataGrid.Columns >
            
</ sdk:DataGrid >

 

        我们看到我在DataGrid里定义了一列用来显示性别,用Converter={StaticResource sexConvert},定义了使用哪个转换器,在这里将提示无法找到转换器,接下来我们添加如下代码到app.xaml文件中:

 

     < Application.Resources >
        
< con:docConverter x:Key = " sexConvert "   />
    
</ Application.Resources >

 

        这样就实现了转换器的定义到调用过程,大家也可以配合LINQ语法实现两个或多个标的数据相互转换,比如表A里有单位ID,在单位表B里有单位名称,现在要求把表A绑定到DataGrid里,我们就要A的单位ID查找B的名称进行转换。

转载于:https://www.cnblogs.com/LYunF/archive/2012/12/04/2800714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值