有时,用户需要更改SharePoint列表项中不可编辑的信息,例如,编辑表单中隐藏的字段(在我的情况下,它是记录编号) 。按显示表单的URL查找SharePoint列表项
我决定创建一个小的Windows GUI应用程序,管理员可以在服务器上运行并进行所需的更改。然而,最简单的方案获得SPListItem
的实例,我发现:
- 管理员进入根网站
- 创建一个
SPSite
ojbect的URL,利用给定的URL:SPSite oSite=new SPSite(this.txtURL.text);
- 管理进入reqired网络
- 为
SPWeb oWeb = oSite.OpenWeb(this.txtWebUrl.text);
- 下拉框中填写所有列表标题从
oWeb.Lists
的
- 管理员从列表框中选择一个列表并输入请求项目的ID;
- 所需
SPListItem
发现为oWeb.Lists[this.lstAllLists.selectedValue].GetItemById(this.txtItemId.value);
SPWeb
对象被创建的相对URL
这是一个很长的路径和管理员没有做喜欢做的打字,点击和等待。
他们想复制listitem的显示表单的URL(从网页浏览器或别人的电子邮件),将其粘贴到更新工具,然后只需点击“查找它!”。
我需要提示如何做到这一点。
我知道我大概可以解析URL与正则表达式,因为它是典型的http://server/sites/[somesite]/[someweb/somesubweb]/lists/[somelist]/forms/dispform.aspx?ID=[123]
形式,但存在偏差 - 例如,http://[server]/[DocumentLibrary]/Forms/RenamedDispForm.aspx?ID=[1234]
有相当不同的结构的第一个例子。
所以,问题是 - 是否有一些简单的方法可以通过它的URL找到SPListItem
?从URL重建SPContext
会很好。
编辑:刚刚发现,有可能通过将其更长的URL构造有效的SPSite
对象:
Dim oSite as New SPSite("http://server/sites/site/Lists/test/DispForm.aspx?ID=136")
谢谢,非常有帮助!打算使用它通过URL查找列表。添加到此函数的一件事是确保将实例化的任何SPSite或SPWeb对象放置,只要它不是Current对象。 (http://msdn.microsoft.com/en-us/library/aa973248.aspx) – brentlightsey 2010-03-22 19:13:45