c# – 以编程方式向DataGridView添加新列
发布时间:2020-12-16 01:22:05 所属栏目:百科 来源:网络整理
导读:我有一个绑定到DataTable的DataGridView. DataTable是从数据库查询填充的.该表包含一个名为BestBefore的列. BestBefore是格式化为字符串的日期(SQLite没有日期类型). 我想以编程方式向DataGridView添加一个名为Status的新列.如果BestBefore小于当前日期,则St
我有一个绑定到DataTable的DataGridView. DataTable是从数据库查询填充的.该表包含一个名为BestBefore的列. BestBefore是格式化为字符串的日期(SQLite没有日期类型).
我想以编程方式向DataGridView添加一个名为Status的新列.如果BestBefore小于当前日期,则Status值应设置为OK,否则Status值应设置为NOT OK. 我是Winforms的新手,所以我们非常感谢一些示例代码. 更新: 我认为DataColumn.Expression可以进行简单的计算,例如将列的整数值乘以另一个值,但是如何做我需要做的事情呢?也就是说,计算nowBefore列中now和date(字符串格式化)之间的差异,以确定为新状态列提供的值.示例代码将不胜感激. 解决方法
将新列添加到DataTable并使用列Expression属性来设置Status表达式.
在这里你可以找到很好的例子: DataTable and DataColumn Expressions in ADO.NET – Calculated Columns UPDATE 代码示例: DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("colBestBefore",typeof(DateTime))); dt.Columns.Add(new DataColumn("colStatus",typeof(string))); dt.Columns["colStatus"].Expression = String.Format("IIF(colBestBefore < #{0}#,'Ok','Not ok')",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); dt.Rows.Add(DateTime.Now.AddDays(-1)); dt.Rows.Add(DateTime.Now.AddDays(1)); dt.Rows.Add(DateTime.Now.AddDays(2)); dt.Rows.Add(DateTime.Now.AddDays(-2)); demoGridView.DataSource = dt; 更新#2 dt.Columns["colStatus"].Expression = String.Format("IIF(CONVERT(colBestBefore,'System.DateTime') < #{0}#,DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |