MOSS 自定义应用页面得到ListId和ItemId

我们可以通过这种方式将用户导航到自定义应用程序页面中。还是以项目级审核为例,我们可以在某个文档库中的每个文档上增加一个菜单项,将用户导航到一个自定义应用页面来显示该文档的审核历史纪录。

当用户点击列表项上的菜单条目时,通常会运行一个应用程序页面。该页面背后的代码往往是针对前面点击的那个列表项或文档来编程。为了实现这种效果,应用程序页面必须能取到该列表项或文档才行。SharePoint通过将列表项或文档的标识信息添加到应用程序页面的query string中来传递这些信息。这样页面就可以在其初始化时通过代码获取该信息并创建出SPListItem对象和其所属的SPList对象。
我们编写CustomAction实体创建一个列表条目上的菜单项,并将用户导航到自定义页面。这个过程中,我们可以使用动态标记(tokens)来配置Url属性,SharePoint会在运行时替换这些标记。一般我们将UrlAction元素的Url属性设置为类似下面的样子:
~ site / _layouts / ItemAudit.aspx ? ItemId = {ItemId} & amp;ListId = {ListId}

这个Url将用户导航到一个名为ItemAudit.aspx的自定义页面。我们注意到该URL包含三个标记。 ~site部分会被当前网站的Url替代。{ListId}部分会被当前列表或文档库的GUID替代。{ItemId}部分会被当前列表项或文档的ID号替代。后两者常用于创建query string,来传递信息给应用页面,使其可以定位列表或文档库对象中条目。

现在,我们来通过代码获取query string传递过来的列表项ID和其所属列表的GUID。使用标准的ASP.NET Request对象的QueryString属性来接收。
SPSite siteCollection  =   this .Site;
SPWeb site 
=   this .Web;
//  obtain query string values
string  ListId  =  Request.QueryString[ " ListId " ];
string  ItemId  =  Request.QueryString[ " ItemId " ];
//  create list object and list item object
SPList list  =  site.Lists[ new  Guid(ListId)];
SPListItem item 
=  list.Items.GetItemById(Convert.ToInt32(ItemId));
//  query for information about list and list item
string  ListTitle  =  list.Title;
string  ItemTitle  =  item.Title;

这里一个重要的地方是,究竟是使用SPDocumentLibrary对象还是SPList对象来进行code?文档库是一个特殊的列表,我们可以将SPList对象转换成SPDocumentLibrary对象。通过转换我们可以使用更多的只有对文档库有效的属性和方法。您也可以使用SPListItem的File属性来返回一个SPFiel对象。这样,我们就可以编程访问该文档本身。

if  (list  is  SPDocumentLibrary) {
  SPDocumentLibrary documentLibrary 
=  (SPDocumentLibrary)list;
  
string  DocumentTemplateUrl  =  documentLibrary.DocumentTemplateUrl;
  SPFile file 
=  item.File;
  
string  FileAuthor  =  file.Author.Name;
  
string  FileSize  =  file.TotalLength.ToString( " 0,### " +   "  bits " ;
}
 ...................转 sunmoon dage http://www.cnblogs.com/Sunmoonfire/archive/2007/06/05/772668.html
0
0
(请您对文章做出评价)

你可能感兴趣的:(list)