0

Web サービスを介して、リストにルックアップ列を設定しようとしています。asp.net Web フォームからデータを取得し、Web サービス メソッド UpdateListItems を使用してバッチ XML を送信しています。ただし、ルックアップで使用する正確なデータをユーザーが入力しない限り、Web サービスはエラーを返します。

とにかく、渡されたデータが同一になるように、Webフォームのユーザーに同様のルックアップ機能を与えることができますか?

共有ポイント 2007 を使用しています。共有ポイントのルックアップ列のデータ ソースは Active Directory です。_x0028_HR_x0029__x0020_Partner はルックアップ列です。ユーザーのログイン名を入力するとフルネームが検索されます。リストから選択できます。

あなたの助けに感謝します。

            ClasService.Lists NewStarterList = new ClasService.Lists();
        NewStarterList.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["SPUserName"].ToString(),
            ConfigurationManager.AppSettings["SPPassword"].ToString(), ConfigurationManager.AppSettings["SPDomain"].ToString());

        NewStarterList.Url = ConfigurationManager.AppSettings["SPUrl"].ToString() + ConfigurationManager.AppSettings["SPServicePath"].ToString();

        try
        {
            string strBatch = "<Method ID='1' Cmd='Update'>" +
                "<Field Name='ID'>" + clasStarter.ClasID + "</Field>" +
                "<Field Name='Title'>" + clasStarter.Name + "</Field>" +
                "<Field Name='_x0028_HR_x0029__x0020_Job_x0020'>" + clasStarter.JobTitle + "</Field>" +
                "<Field Name='Entity'>" + clasStarter.Entity + "</Field>" +
                "<Field Name='Practice_x0020_Groups'>" + clasStarter.PracticeGroup + "</Field>" +
                "<Field Name='Dept'>" + clasStarter.Department + "</Field>" +
                "<Field Name='Physical_x0020_Desk_x0020_Locati'>" + clasStarter.Location + ", " + clasStarter.LocationInBuilding + ", " + clasStarter.Department + "</Field>" +
                "<Field Name='_x0028_HR_x0029__x0020_Line_x002'>" + clasStarter.LineManager + "</Field>" +
                "<Field Name='_x0028_HR_x0029__x0020_Buddy'>" + clasStarter.Buddy + "</Field>" +
                "<Field Name='_x0028_HR_x0029__x0020_Partner'>" + clasStarter.Partner + "</Field>" +//is a look up

                "</Method>";

            XmlDocument xmlDoc = new System.Xml.XmlDocument();

            System.Xml.XmlElement elBatch = xmlDoc.CreateElement("Batch");

            elBatch.SetAttribute("OnError", "Continue");
            elBatch.SetAttribute("ListVersion", "1");
            elBatch.SetAttribute("ViewName", ConfigurationManager.AppSettings["SPViewID"].ToString());

            elBatch.InnerXml = strBatch;

            XmlNode ndReturn = NewStarterList.UpdateListItems(ConfigurationManager.AppSettings["SPListID"].ToString(), elBatch);

        }
        catch (Exception exp)
        {
            throw new Exception("NewStarterForm - Clas Update failed ", exp);
        }
4

1 に答える 1

0

私の問題の完全な解決策はわかりませんでしたが、その一部はわかりました。

共有ポイントの検索列には、id と値の 2 つの部分があります。値がわからない場合は、ID の代わりに -1;# を使用できます。

これの例は

"<Field Name='Partner'>-1;#" + partnerLogOnId + "</Field>"

おそらくリストを使用して、フォームのユーザーが人を選択できるようにし、partnerLogOnId を Web サービス メソッドに渡します。

于 2012-11-30T16:12:41.777 に答える