使用带有Y和N值的DataGridViewCheckBoxColumn而不是布尔值

时间:2014-08-25 13:16:59

标签: vb.net datagridviewcolumn datagridviewcheckboxcell

嗨我知道这可能听起来有点傻但我想在数据库中的字段上使用DataGridViewCheckBoxColumn,该字段包含' Y' N' N'或空值。我希望检查Y值,并取消选中其他所有内容。

我正在使用VB.NET,对此有任何帮助将不胜感激。在任何人问之前我都无法将数据库字段更改为布尔值我必须按原样滚动它。

3 个答案:

答案 0 :(得分:1)

您可以使用IValueConverter,如下所示:

 public class YesNoToBooleanConverter : IValueConverter
 {

     public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     {

        return ((value as string).Equals("Y")) ? true : false;
     }

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     {
        return value;
     }
 }

在使用转换器进行绑定时,如果您使用的是wpf,请按以下方式绑定它。

这只是一个例子:

  1. xmlns:local="clr-namespace:project.converter"
  2. 在资源下:

    1. <Grid.Resources> <local:YesNoToBooleanConverter x:Key="YesNoToBooleanConverter" /> </Grid.Resources>
    2. 在您的专栏

      1. DataMemberBinding="{Binding Active, Converter={StaticResource YesNoToBooleanConverter}}"

答案 1 :(得分:0)

试试这个

获取查询的输出是boolean,如此

select case when column1="Y" then true else false end as column from table1

之后data source分配datagridview

答案 2 :(得分:0)

正如我在answering之前的一条评论中所说的那样:我很确定我在之前已经这样做了。好吧,我猜是什么,解决方案非常简单。

DataGridViewCheckBoxColumn类有两个属性可以帮助您。

  • FalseValue :获取或设置与单元格值true对应的基础值,该值显示为复选框。

  • TrueValue :获取或设置与单元格值false对应的基础值,该值显示为未选中框。

With Me.MyDataGridViewCheckBoxColumnInstance
    .FalseValue = "N"
    .TrueValue = "Y"
    .DataPropertyName = "MyYesNoDataColumnName"
End With