当前位置 : 主页 > 编程语言 > c语言 >

c# – 以编程方式向DataGridView添加新列

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有一个绑定到DataTable的DataGridView. DataTable是从数据库查询填充的.该表包含一个名为BestBefore的列. BestBefore是格式化为字符串的日期(SQLite没有日期类型). 我想以编程方式向DataGridView添加
我有一个绑定到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}#, 'Ok','Not ok')", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
网友评论