嗨,我知道这听起来可能有点傻,但我想在数据库中包含“Y”、“N”或空白值的字段上使用 DataGridViewCheckBoxColumn。我希望检查 Y 值并取消选中其他所有内容。
顺便说一句,我正在使用 VB.NET,对此的任何帮助将不胜感激。同样在任何人问不之前,我不能将数据库字段更改为布尔值,我必须按原样滚动。
嗨,我知道这听起来可能有点傻,但我想在数据库中包含“Y”、“N”或空白值的字段上使用 DataGridViewCheckBoxColumn。我希望检查 Y 值并取消选中其他所有内容。
顺便说一句,我正在使用 VB.NET,对此的任何帮助将不胜感激。同样在任何人问不之前,我不能将数据库字段更改为布尔值,我必须按原样滚动。
你可以使用一个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,这就是您绑定它的方式。
这只是一个例子:
xmlns:local="clr-namespace:project.converter"
在资源下:
<Grid.Resources>
<local:YesNoToBooleanConverter x:Key="YesNoToBooleanConverter" />
</Grid.Resources>
在你的专栏
DataMemberBinding="{Binding Active, Converter={StaticResource YesNoToBooleanConverter}}"
像这样试试
得到查询的输出是boolean
这样的
select case when column1="Y" then true else false end as column from table1
之后data source
分配datagridview
正如我在回答您之前的一个问题时在评论中所说:我很确定我以前做过。好吧,猜猜是什么,我有,解决方案非常简单。
DataGridViewCheckBoxColumn类有两个属性可以帮助您。
FalseValue:获取或设置对应于单元格值为 true 的基础值,该单元格值显示为复选框。
TrueValue:获取或设置对应于单元格值为 false 的基础值,该单元格值显示为未选中的框。
With Me.MyDataGridViewCheckBoxColumnInstance
.FalseValue = "N"
.TrueValue = "Y"
.DataPropertyName = "MyYesNoDataColumnName"
End With