准备将datagrid关联到数据库中的一个表(通过dataSet),但表中有一项内容是和时间有关的,每次都需要根据当前时间计算才能得到正确的值,不能直接得到,如何能让它在datagrid中正确的显示计算以后的值?急啊,请高手们施以援手!

解决方案 »

  1.   

    you can use a SQL function :
    GetDate()in the query string, you can write
     select aaa, bbb , GetDate() from table1and fill it the datesetbut maybe you have to  refresh consistanly  the page to get the accurate time
      

  2.   

    用方法调用<%# GetDate((DataBinder.Eval(Container.DataItem,"表中有一项内容"))) %> 在cs文件中定义GetDate方法,计算正确的值
      

  3.   

    谢谢大家的解答。
    但我还是不知道怎样去做。我举个更详细一点的例子好了
    员工加班费,平时都是20块/小时,但有时候特殊时期有特殊的加班工资,每个员工特殊时期起始时间和截至时间可能不一样,加班费也不一样,因此设计如下的表:
    ygjbfb:
    员工ID
    每小时加班费
    起始时间
    截止时间
    计算方式(具体表明其在特殊周期里面那几天算特殊加班,如只对周六周日)这样在计算员工的工资时,需要从ygjbfb中根据员工ID去找,如果有,则根据计算方法来计算每一天的加班费是多少,我想在datagrid中显示当天每个员工的每小时加班费,因此需要将ygb(员工表)和ygjbfb的内容放在一起,但加班费这一项不能直接显示,怎样才能做到这一点?
      

  4.   

    可以将结果在Sql里算出来,然后传给DataGrid.
    Sql 如下(没有考虑计算方式,这个你可以自己加上)
    --***********************************************************************
    Select 
       A.EmpID,
       B.EmpName,
        ((Day(EndTime-StartTime)-1) * 24 +
        Convert(Int,Left(Convert(varchar( 8),EndTime - StartTime,108),2)) +
        Convert(decimal,Substring(Convert(varchar( 8),EndTime - StartTime,108),4,2))/60) * UnitFee As Salary   
    From YGJBFB As A
    Left Join YGB As B On A.EmpID = B.EmpID
    --*************************************************************************数据字典:
    员工ID          -- EmpID
    每小时加班费    -- UnitFee
    起始时间        -- StartTime
    截止时间        -- EndTime员工姓名        -- EmpName
    --**************************************
    代码说明:Day(EndTime-StartTime)-1  -------〉 计算出加班天数
    Convert(Int,Left(Convert(varchar( 8),EndTime - StartTime,108),2))  --------〉计算出加班小时数
    Convert(decimal,Substring(Convert(varchar( 8),EndTime - StartTime,108),4,2))/60)-----------〉计算出加班分钟数。实际加班费 = (加班天数*24 +加班小时数 + 加班分数/60)* 每小时加班费至于Left Join取员工名称我就不用解释了吧。以上!
      

  5.   

    to:  whslovexyp(我爱艳平) 
    我也想用你的这种方法,但我不知道如何去做,来实现既绑定dataSet,又有些列由自己动态加入。能指点一下吗?