none
关于ItemAdding不能取消增加的动作 RRS feed

  • 问题

  • 我现在写了一个 SPItemEventReceiver里面重写了一个ItemAdding,我希望当我判断符合了一定的条件话就不让他增加了,并且报出错误的原因。

    我现在是模仿ItemDeleting里面写的,貌似没什么作用.

      public override void ItemAdding(SPItemEventProperties properties)
    {
        if(XXXX)
        {
            properties.ErrorMessage = "此时间段内已被确定使用!";
            properties.Cancel = true;
        }
    }

    如果像工作流那样直接删除的话感觉不是太好,我希望报出那个错误信息。不知道可有什么方法。

    难道只有ItemDeleting可以取消删除,ItemAdding不能取消增加的动作?
    2010年1月7日 2:53

答案

  • 1. ing 动作(当然包括 Adding) 是异步的,是可以被 cancel 的,

    2. 检查这个 Receiver 与 ItemAdding 是否真的注册成功?

    3. 能确保你自己挂的这个 ItemAdding 被调用了吗?去掉 if 看看


    Xiaofeng Wang | http://www.leoworks.net | Beijing P.R.C
    • 已标记为答案 ahjxxy 2010年1月8日 9:11
    2010年1月7日 17:38

全部回复

  • 我测试ItemAdding是可以被properties.Cancel = true取消增加的动作的。

            public override void ItemAdding(SPItemEventProperties properties)
            {
                properties.Cancel = true;
                properties.ErrorMessage = "Adding Cancelled";
                //base.ItemAdding(properties);
            }

    所以检查下if条件。

    另外,这是开发问题,发错地方了。

    -lambert


    上善若水
    2010年1月7日 14:43
  • 1. ing 动作(当然包括 Adding) 是异步的,是可以被 cancel 的,

    2. 检查这个 Receiver 与 ItemAdding 是否真的注册成功?

    3. 能确保你自己挂的这个 ItemAdding 被调用了吗?去掉 if 看看


    Xiaofeng Wang | http://www.leoworks.net | Beijing P.R.C
    • 已标记为答案 ahjxxy 2010年1月8日 9:11
    2010年1月7日 17:38
  • 已经解决了,貌似是不能用listitem这种方式来接受当前所编辑的数据。
    thx
    2010年1月8日 9:11