1

次の問題があります。「TestUsers」と「TestGroups」の2つのリストがあります。「TestUsers」リストには、[グループ - 選択肢]、[ユーザー - 1 行のテキスト] の 2 つの列があります。「TestGroups」リストには、[グループ - 1 行のテキスト]、[CheckedOut - 1 行のテキスト] の 2 つの列があります。

両方のリストのデータは次のとおりです。

TestUsers (リスト): ユーザー: testuser1 グループ: groupA

ユーザー: testuser2 グループ: groupB

TestGroups (リスト): グループ: groupA CheckedOut: testuser1

要件は、「TestUsers」リスト内のユーザーの「グループ」が「groupA」から「groupB」に変更された場合、これが「TestGroups」リストにも反映され、自動的に更新されることです。たとえば、「TestUsers」リストで「testuser1」の「グループ」を「groupB」に変更した場合、「TestGroups」リストで「testuser1」の「グループ」も「groupB」に変更/更新する必要があります"。

要件が何であるかを説明する上で、上記が十分に明確であることを願っています。

ワークフローを使用し、ルックアップ列と計算列を使用してこれを実行しようとしました。しかし、計算列とルックアップ列の両方が機能していないようです。

C# のコードを使用してこれを達成するにはどうすればよいでしょうか。リストアイテムを更新する方法は知っていますが、前述のように別のリストで値が変更されたときにリストからリストアイテムを更新する方法がわかりません。

私はこの問題で立ち往生しており、ここに投稿して、続行する方法について迅速かつ正確な提案を得ることができると考えました.

どうもありがとう、これについての助けは大歓迎です。

4

1 に答える 1

1

これを試すことができますイベントレシーバーでItemUpdatingイベントメソッドを使用するだけで、アイテムが変更されたかどうかをチェックして、ロジックを作成します

 public override void ItemUpdating(SPItemEventProperties properties)
    {
        base.ItemUpdated(properties);
        if (properties.ListTitle == "TestUsers")
        {
            SPWeb web = properties.OpenWeb();
            SPList list = web.Lists[properties.ListTitle];
            SPListItem litemUser = list.GetItemById(properties.ListItemId);


            SPList objFeatureList = web.Lists["TestGroups"];
            SPQuery objParentQuery = new SPQuery();

            string user = properties.AfterProperties["User"].ToString();

            //in Caml query just find it out listitem which contain Users and than update its listitem.
            objParentQuery.Query = "<Where><Eq><FieldRef Name='Check_x0020_it_x0020_out'/><Value Type='Integer'>"+You should set Userid in Field From litemUser +"</Value></Eq></Where>";
            SPListItemCollection liitemcol = objFeatureList.GetItems(objParentQuery);
            foreach (SPListItem litemGroup in liitemcol)
            {
                litemGroup["Group"] = litemUser["Group"];
                litemGroup.Update();

                // or if you want to using Workflow just startWorflow when item has match over here.
            }

        }
    }
于 2012-03-19T12:49:06.610 に答える