数据库中一字段为DateTime(Start_time),GridView在编辑状态下,分为年、月、日、小时、分、秒六个DropDownList,在更新时应该怎么做?GV的数据源为ObjectDataSource1
可不可以修改ObjectDataSource1.UpdateParameters,让ObjectDataSource1.Update()来做更新?

解决方案 »

  1.   

    ObjectDataSource.Inserting事件处理代码里,把六个DropDownList的值取得后建一个DateTime类型的对象,然后赋值给对应的参数。
      

  2.   

    当你设计BLL接口规格时,不要去想“数据库中一字段为....”这种东西。数据库是隐藏在BLL方法之后的,设计界面不要去纠缠于数据库,数据库是比较次要的东西。因此,在ObjectDataSource1的UpdateMethod中声明的那个方法,你就可以正常地设置为包含那6个输入参数。然后在这个方法内部,再使用    new DateTime(y,mo,d,h,mi,s)来创建对象,然后更新数据库。如果设计BLL接口时抛开数据库的纠缠,将来写这类代码也可以总是很顺利。
      

  3.   

    我们举一反三地说,如果有一天你把界面设计调整为不是使用6个DropDownList,而是使用一个Calendar控件以及3个DropDownList,那么你的那个声明的Update方法的BLL接口就另外使用一个包含这个4个输入参数的重载。同样地,数据库被隐藏在BLL实现之下,这两个重载方法之下的数据库并不改变,或者在一个BLL接口不改变的情况下数据库结构随便改变,“BLL使用数据库”跟“界面使用BLL”是两个分离的层次。不要在界面程序设计时纠缠于数据库结构。
      

  4.   

    如果必须用Dropdownlist来更新,需要注意每月天数不同
            如果你是一层结构,整合DateTime就只能放在页面了。
            如果你是两层结构,建议把整合成一个DateTime的工作放在前端。
            如果你是三层结构,建议把整合成一个DateTime的工作放在中间,像sp1234所说的那样
    如果不是必须用Dropdownlist,建议使用自定义文本框录入方式
      

  5.   

    不管叫做几层,它使用了一个 ObjectDataSource。也许我用BLL的名词会造成“错觉”。我说BLL的意思就是说它实现了将数据库从界面设计中分离开来的功能,甭管开发这个页面的人心中认为是几层的,都是如此。我只是借用BLL这个概念来说明 ObjectDataSource 设计时应该忘掉或者假设数据库结构有两种以上区别。实际上喜欢把代码叫做几层都行,根本不用管这是几层,只要在意你使用了 ObjectDataSource 这个控件就行了。
      

  6.   

    同意Sp1234的观点,其实只要你把拼成了一个DateTime对象即可,不用考虑它在具体的数据库中是什么类型
      

  7.   

    同意Sp1234的观点,其实只要你把拼成了一个DateTime对象即可,不用考虑它在具体的数据库中是什么类型
      

  8.   

    做项目最好不要用gridview,除非你真的很牛比。
      

  9.   

    一次性开发,用ObjectDataSource没什么关系,但最好还是自己写更新方法好一点,这样对改动比较方便