0

SharePoint にサイトがあり、リストからカスタム削除したいと考えています。だから、私は作成しています

 public class ListItemEventReceiver : SPItemEventReceiver
 {
 public override void ItemDeleting(SPItemEventProperties properties)
        {
            if (properties.ListTitle.Equals("Projects List"))
            {
               Projects pr = new Projects();
               string projectName = properties.ListItem["Project Name"].ToString();
               pr.DeleteProject(projectName);
            }
         }
}

「Projects」クラスには、アイテムを削除する「DeleteProject」メソッドがあります。しかし、それは何もしていません:( Feature.xmlですべて問題ないと述べています

どこが間違っていますか?

編集(「回答」から):

  1. はい、私はこれを試しました:

    properties.ErrorMessage = "projectName :" + projectName;
    properties.Cancel = true; 
    

    if 句とそれが発生しているイベントで、プロジェクト名を正しく表示します。

  2. 私はファーム管理者であり、このサイトを完全に制御できるサイト管理者です。

  3. DeleteProject メソッドは正しいです。他のアプリケーション (c#) で試してみたところ、問題なく動作しました。

4

2 に答える 2

0

いくつかの点を確認してください。

  • リスト アイテム レシーバーはリストに接続されているので、起動しますか?
  • トリガーを起動させたユーザーは、アイテムを削除する権限を持っていますか?
  • DeleteProject にプログラミング エラーはありますか?

ログを記録して、どれだけ実行されているかを確認してください。

編集

問題はここにありますか:

           string projectName = properties.ListItem["Project Name"].ToString(); 

「プロジェクト名」という名前のリスト項目は、名前にスペースが含まれていますか?

編集 2

あなたのコメントから、認証と接続文字列の組み合わせは、データベースに対して使用されているのは、ログオンしているユーザーのセキュリティ コンテキストであることを意味します。ユーザーの権利を確認してください。

于 2010-05-27T19:37:23.840 に答える
0

イベントが発生し、唯一のメソッド pr.DeleteProject(projectName); の場合。が正しく機能していない場合、何が問題なのかを推測するのは困難です。機密でない場合は、コードを投稿してください。そうすれば、何が問題なのかを特定できるようになります。

ところで、リストの .Update() Method を呼び出していますか?

このリンクをチェックしてくださいhttp://msdn.microsoft.com/en-us/library/ms431920.aspx

もう 1 つ気をつけなければならないのは、Item ed および Item ing イベントです。Item*ing イベントの場合は、必要に応じて Before または After プロパティを使用することをお勧めします。

よろしく、

アゼル・イクバル

于 2010-05-29T19:28:38.490 に答える