【问题标题】:Datagrid if/then row calculationDatagrid if/then 行计算
【发布时间】:2011-11-02 14:33:52
【问题描述】:

在 C# 中,我构建了一个连接到数据网格的数据表,该数据网格具有三列:id1、id2 和 sum。

我想将 id1 和 id2 加到“sum”列中,但前提是 sum 大于 x(x 将从 textbox1 提供)。

我有这段代码,但默认情况下会添加所有列,并且不允许使用 if/then 语句。

        column = new DataColumn();
        column.DataType = Type.GetType("System.Double");
        column.ColumnName = "sum";
        table.Columns.Add(column);
        table.Columns["sum"].Expression = "[id] * [id2]";

我考虑过添加一个 foreach(table.Rows 中的 Datarow 行)(),但这不允许我创建 if then 语句。

【问题讨论】:

    标签: c# .net datagridview datatable


    【解决方案1】:

    假设此时你有 x 的值,只需在表达式中做一个 case 语句。

    做一些类似的事情 -

    table.Columns["sum"].Expression = "CASE WHEN [id] * [id2] > " + x + " THEN [id] * [id2] ELSE NULL END ";
    

    顺便说一句 - 你想要产品还是总和?该列名为 sum,但您得到的是产品....只是好奇。

    如果查询时没有 x,则必须在 DataGrid 的 ItemDataBound 事件中执行此操作。让该总和列成为模板列并在事件中计算它的值。

    【讨论】:

    • 我添加了您发布的确切代码并收到以下错误:“语法错误:'WHEN' 运算符后缺少操作数。” table.Columns["sum"].Expression = "CASE WHEN ([id] * [id2]) > 7 THEN [id] * [id2] ELSE NULL END";我什至没有在 Google 搜索中看到此类 on 选项的参考,仅与 SQL 函数有关。
    • 找到了微软的笔记:msdn.microsoft.com/en-us/library/… 但我看不到什么时候的 synatx。
    • 这解决了它:table.Columns["sum"].Expression = "IIF([id] * [id2] > 7,1,[id] * [id2])";跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2013-09-10
    • 2014-10-30
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多