1

だから、私はこのコードを持っています:

public override void ItemUpdated(SPItemEventProperties properties)
{
    base.ItemUpdated(properties);

    SPListItem newItem = AMethodWhichGetsANewListItem();   
    properties.ListItem.ParentList.GetItemById(properties.ListItemId).Delete();

    properties.Cancel = true;
    properties.InvalidateListItem();
    properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;
    properties.RedirectUrl = newItem.ParentList.DefaultDisplayFormUrl + "=" + newItem.ID;
}

このイベントのプロパティには、利用できない ListItem があります。これ以降、キャンセルやリダイレクトはできません。

エラー ログには次のように表示されます。

`System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.    at Microsoft.SharePoint.SPListItemCollection.get_Item(Int32 iIndex)     at Microsoft.SharePoint.SPListItem.EnsureItemIsValid()`

追加しても何も起こりproperties.InvalidateListItem()ません。ItemUpdated ブロックの try { } キャッチは、例外をキャッチしません。

私に何ができる?

4

2 に答える 2

0

コードを ItemUpdating に変更しました。このオーバーライドでは、すべてが完璧に機能します。

于 2012-11-15T08:50:05.963 に答える
0

私はあなたが行方不明だと思います

    SPWeb web = properties.Web;
    web.AllowUnsafeUpdates = true;
于 2012-11-14T16:58:59.313 に答える