none
高人救命 DataTable 有没有办法自定义列计算函数 RRS feed

  • 问题

  • DataTable中, DataColumn 的 Expression 支持一些计算函数, 比如 SUM, AVG, TRIM, IIF 等函数
    但一些常用函数, 象四舍五入函数, 就没有支持, EXCEL中的很多函数也没能支持,
    现在我的一个项目中, 因为用户要求能够建立表单模板, 能够支持常用函数

    我想扩展一下, 给DataTable 的列添加一些新的计算函数, 请问有没有办法

    请大师们帮帮忙


    2010年1月13日 6:01

答案

  • 理想是好的,代码是要你自己写的。至于在DataTable的派生类里面实现的尝试,对你的需求又没有什么帮助,反而减少了代码的可复用性,不知道你为什么要这么做。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年1月19日 3:37
    版主

全部回复

  • 为什么要这么做?把数据读出来放在一个实体里面,再加计算属性不行么?

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年1月13日 20:04
    版主
  • .NET 3.5以上可以试试扩展方法~
    2010年1月14日 8:03
    版主
  • 你好,DataTable是一个数据绑定控件,你可以在数据绑定之前计算,比如Sql查询中计算好,然后由DataTable绑定。
    2010年1月15日 3:43
    版主
  • 因为用户录入数据时,需要计算出结果
    如果把数据存入SQL中,然后再读出来,也可以,
    不过那样一来严重影响性能,用户每输入一个数,就要与SQL交互一次
    (计算公式,要求是用户自定义的)

    2010年1月16日 0:13
  • 如果无法直接扩展实现,大师们有没有 如何实现 计算公式解析与计算 的资料链接学习一下
    谢谢了
    2010年1月16日 0:24
  • 这种逻辑不都是在业务逻辑层做的么?为什么要在数据层做?
    DataTable自己的那些函数也都是用正则表达式解析的。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年1月16日 0:27
    版主
  • 是这样,我现在做的项目,是一个产品测试中心的项目
    用户从某台测试机上获取一个数据,向软件中输入数据后,
    软件要据此计算出另一个相应的指标(下一个检测流程可能与这个指标相关)

    现在问题是,这个计算公式,是编程人员事先不能确定的,用户会根据不同的测试指标,制定不同的计算公式。
    程序中需要的是,解析并计算这个计算公式中的值。

    因为数据是放在DataTable中,DataTable本身可以在运行时解析并计算一部分函数。
    如果编程人员能够根据需要,扩展出更多的用户可能函数,那样会更理想。

    2010年1月19日 2:34
  • 理想是好的,代码是要你自己写的。至于在DataTable的派生类里面实现的尝试,对你的需求又没有什么帮助,反而减少了代码的可复用性,不知道你为什么要这么做。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年1月19日 3:37
    版主