我一直在尝试以编程方式重现在SharePoint网站管理屏幕中编辑内容类型的字段属性并选择使用WSS 3.0 Web服务的Webs.asmx“UpdateContentType”方法没有成功的“必需”单选按钮的行为。SharePoint Web服务 - 更新ContentType字段必需的属性?
第一个困难是MSDN文档中的问题,即所谓的字段应该是FieldRef类型,实际上它们需要是字段类型(reference)。修复后添加字段和删除字段可以正常工作,但更新字段似乎根本不起作用。 (还应该注意的是,我遵循上一个链接的建议,使用Method="2"
来更新字段,但它没有任何变化,并且使用除1以外的方法值进行添加,或者使用除3以外的方法进行删除也可以正常运行。
这里的Web服务调用(用绳子代替了可读性的XmlNode对象略有修改):
SharePointWebServices.Webs webService = new SharePointWebServices.Webs();
webService.Url = "http://mysharepointserver/site";
webService.UseDefaultCredentials = true;
webService.UpdateContentType(
@"0x01005A089D9EC8A382458FB1F6C72096D52A",
@"<ContentType />",
@"<Fields />",
@"<Fields><Method ID=""1""><Field Name=""SomeField"" ID=""{8a4803c4-6545-4a7a-804d-237eebff0ce3}"" Required=""TRUE"" Hidden=""FALSE"" ReadOnly=""FALSE"" PITarget="""" PIAttribute="""" PrimaryPIAttribute="""" Aggregation="""" Node="""" /></Method></Fields>",
@"<Fields />");
通话结束后,现场仍需要=“FALSE”。
快速查看stssoap.dll程序集,指出在更新过程中显然忽略了“必需”属性。这是正常的行为吗?如果是这样,推荐的方法是通过编程方式从客户端代码更改“必需”字段(不在SharePoint服务器上执行)?
任何帮助将不胜感激。
对我来说,在服务器上部署代码实际上是不可能的,可悲的是,因此寻求解决方法。最终,如果找不到其他方法,我将不得不放弃这个功能。 – CMerat 2009-08-12 13:33:46