c# - 如何将数据表列类型转换为执行过滤器
问题描述
所以我试图过滤我的数据,BindingSource
但datagridview
我的列(余额和非活动天数)类型string
也有Null value
,我正在尝试使用比较运算符<=, >=
但显示错误System.Data.EvaluateException: 'Cannot perform '>=' operation on System.String and System.Int32.'
我试图改变我的datagridview的valueType,
dgv.Columns["Balance"].ValueType = typeof(Decimal); //it doesnt work
并试图克隆我的数据表并为我克隆的数据表设置新类型
DataTable dtCloned = dt.Clone();
dtCloned.Columns["Balance"].DataType = typeof(Decimal);
dtCloned.Columns["Inactive Days"].DataType = typeof(Int32);
foreach (DataRow row in dt.Rows)
{
dtCloned.ImportRow(row);
}
// error shown
System.ArgumentException: 'Input string was not in a correct format.Couldn't store <> in Debit Inactive Days Column. Expected type is Int32.'
这是我的过滤器代码:
public void dgv_tabPage_content(DataGridView dgv, TabPage tabpage)
{
BindingSource bs = new BindingSource();
bs.DataSource = dgv.DataSource;
string filter_DD1 = "[Acct Type] LIKE '%DD%' AND [Balance] <= 6000.00 AND [Inactive Days] >= 5";
string filter_DD2 = "[Acct Type] LIKE '%DD%' AND [Balance] >= 6000.00 AND [Inactive Days] >= 3";
bs.Filter = string.Format("{1} OR {2}", filter_DD1, filter_DD2);
dgv.DataSource = bs;
}
如何使用比较运算符过滤具有空值的字符串类型列?
解决方案
我不确定这是否是您的意思,但为什么不使用where is not null
然后关闭您的过滤器。
string filter = string.Format("[Task] is not null and LIKE '%{0}%'", tabpage.Text);
推荐阅读
- xml - DataTrigger 中的多个绑定
- html - 外部 div 背景可见 arround 内部 div 在 Chrome
- vb.net - LINQ to Entities 中的自定义函数?如何编写可接受的代码?
- postgresql - 全文搜索缺失词
- mysql - 进行 SQL 查询以给出这样的特定结果
- reactjs - 组件不会在路由更改时重新渲染
- visual-studio-code - Visual Studio Code 工作区可以与多个 Windows 一起使用吗?
- reactjs - 如何不在 mapdispatchtoprops 中使用 bindActionCreators?
- arrays - 如何解析这个未知的数组表示法?这个数组表示法来自什么语言?
- c++ - 以排序顺序在链表中插入多个元素时出现分段错误