0

我正在尝试通过 Web 服务填充列表中的查找列。我从 asp.net Web 表单获取数据并使用 Web 服务方法 UpdateListItems 并发送批处理 XML。但是,除非用户输入查找使用的确切数据,否则 Web 服务会返回错误。

无论如何,我可以为网络表单的用户提供类似的查找功能,以便传递的数据相同吗?

我正在使用共享点 2007 共享点中查找列的数据源是活动目录。_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 和一个值。如果您不知道该值,那么您可以使用 -1;# 作为 ID 的替代品

这方面的一个例子是

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

我可能会使用一个列表,允许我的表单的用户选择人员,并将 partnerLogOnId 传递给我的 Web 服务方法。

于 2012-11-30T16:12:41.777 回答