EventReceiverのでItemUpdated自分自身を更新してはいけない?[SharePoint]

public override void ItemUpdated(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
try
{
SPListItem item = properties.ListItem.ParentList.GetItemById(properties.ListItem.ID);
if (item.GetFormattedValue("Whereabout") == "出勤"
|| item.GetFormattedValue("Whereabout") == "退勤"
|| item.GetFormattedValue("Whereabout") == "帰宅")
{
item["Until"] = null;
item.Update();
}
}
catch (Exception ex)
{
}
}
上記のサンプルはアイテムが更新されたら更新されたアイテムの値を見て他のフィールドも更新する例ですが、
試してみるとItemUpdatedが無限に呼び出されます。(UpdateによりUpdateが呼び出されるため)
実際は10回程度しか呼び出されませんが。。バージョン管理を使っていると大変なことに。。
いろいろ試してみてitem.Update()の代わりにSystemUpdate()使えば問題なさそうですが。。。
もしSystemUpdate()もよくない解決方法なら
結局、ItemUpdatingのAfterPropertyで処理しかないんでようかね。
もしより美しい解決方法を知ってる方は教えてくください~~~~
----------------------
위의 샘플은 아이템이 업데이트될때에 현재 아이템의 다른 필드도 갱신하는 예제입니다.
하지만 실제로 실행해보면 ItemUpdated가 무한정 불려지게됩니다. (ItemUpdated가 또 ItemUpdated를 부르기때문에..)
실제로는 10번정도 불려지지만 버전관리를 사용하는 아이템이라면 엄청난 일이..-0-
여러가지 시도해보았는데 item.Update() 대신에 SystemUpdate()를 사용하면 해결되는거 같습니다.
하지만 SystemUpdate()가 제대로된 해결책이 아니라면...
해결방법으로는 ItemUpdating의 AfterProperty를 사용하는법밖에 없는듯한데 더 좋은 해결책 가지고 계신분계시면 말씀해주세요.
'SharePoint' 카테고리의 다른 글
| [중요] WSS스케줄 리스트의 심각한 버그, WSSスケジュールリストの深刻なバグ [SharePoint] (1) | 2008/05/30 |
|---|---|
| 워크플로 시작을 간단하게 (ワークフローの開始を楽ちんに) [SharePoint] (0) | 2008/05/26 |
| EventReceiverのでItemUpdated自分自身を更新してはいけない?[SharePoint] (0) | 2008/05/21 |
| VS Extensions 1.1인스톨후에 1.0에서 작성한 프로젝트를 인식못하는 문제..Vs Extensions 1.1のインストール後、1.0で作成したプロジェクトを認識できない。 (0) | 2008/04/01 |
| Visual Studio 2005 Extensions, Windows SharePoint Services 3.0버전 1.1 (0) | 2008/04/01 |
| アイテムの非公開(本人以外権限なしにする)、아이템의 권한을 본인만 허용(비공개아이템작성법) (0) | 2008/03/28 |
![]() |
![]() |
|
![]() |
![]() |
![]() |

Prev





