加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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表达式.

在这里你可以找到很好的例子:DataColumn.Expression Property

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"));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读