none
在EventReceiver中,利用updating和updated事件将一个日期类型的栏里面的值恒定。但是如果反复编辑,有时就会出现自动加1天的问题 RRS feed

  • 问题

  • 我在EventReceiver的updating事件中获取到一个日期栏的值,然后在updated事件中将这个值保存下来,使这个日期栏的值永远恒定这一个值。

    然后效果可以实现,突然我发现如果我反复编辑那个listitem,有时就会在这个日期栏的值上面自动+1天。并不是每次都加。

    • 已编辑 GeniusW 2011年7月20日 5:44
    2011年7月19日 8:42

答案

  • 你好,

    如果你想要用户在创建的时候可以设置这个字段,之后不能再修改这个字段,你可以用sharepoint designer 2010去为这个list创建一个新的editform.aspx 页面,然后删除这个这个字段。

     

    • 已标记为答案 GeniusW 2011年7月21日 1:31
    2011年7月21日 1:22
    版主

全部回复

  • Hi,

    I don't get your point from your description.

    For this forum, please descript your question in chinese not in english.

    你的问题描述的不是很清楚,请用中文描述你的问题。

     

    2011年7月20日 5:17
    版主
  • 抱歉。。我英语很差。。就偷懒去google翻译弄了个。不伦不类的英语。。

    我在EventReceiver的updating事件中获取到一个日期栏的值,然后在updated事件中将这个值保存下来,使这个日期栏的值永远恒定这一个值。

    然后效果可以实现,突然我发现如果我反复编辑那个listitem,有时就会在这个日期栏的值上面自动+1天。并不是每次都加。

     

    2011年7月20日 5:42
  • 你好,

    你说的是你新创建的字段还是默认的修改日期?

    如果是你新创建的字段,如果你不想让用户修改这个字段,你可以使用“计算字段(caculated)”去显示这个日期值。

    如果是默认的修改字段,在eventreceiver中请用splistitem.systemupdate()代替splistitem.update()方法。

     

    2011年7月20日 7:09
    版主
  • 你好,

    我的那个字段叫做测试日期,是个自定义栏,你说的用计算字段去显示这个日期值,我不太明白哦。如果用计算栏的话也没有那个日历的小控件了啊。

    2011年7月20日 7:56
  • Hi, GeniusW

    照我的理解你是希望用户在第一次编辑过那个日期类型字段后就不能再修改该字段的值了吧,如果是这样你可以在updating事件中去判断beforeproperties和afterproperties的值,将该字段前后两个值进行比较,从而控制该字段的值。不知道我理解的对不对,希望可以帮到你。

    2011年7月20日 15:23
    版主
  • Hi,

    这个listitem在创建之后,那个日期类型的栏里面的值就不能再改了。这是我的需求。updating我试过了。。不满足要求。不过还是要谢谢你

    2011年7月21日 1:07
  • 你好,

    如果你想要用户在创建的时候可以设置这个字段,之后不能再修改这个字段,你可以用sharepoint designer 2010去为这个list创建一个新的editform.aspx 页面,然后删除这个这个字段。

     

    • 已标记为答案 GeniusW 2011年7月21日 1:31
    2011年7月21日 1:22
    版主
  • 你好,

    万分感谢,这是个非常棒的想法。

    2011年7月21日 1:30