获取sharepoint讨论板地址

之前碰到,新建讨论板之后,要在另一个site中,访问讨论详细内容,于是找讨论主题地址,以下是在用的方法
通过事件监听(监听事件的创建,请参考MSDN这个例子),讨论板建立之后,获取其地址,目前有手动拼接,如果有更好的方法请留意告之;

新建名为text的讨论板,地址例如为:
http://win-l8muo3ci7hb/sites/Project/Lists/List4/Flat.aspx?
RootFolder=%2Fsites%2FProject%2FLists%2FList4%2Ftest&
FolderCTID=0x012002000011AC68D38FA24BAE274F76B33E6338   

其中,
RootFolder参数:经过了URL转码之后的,对其反转码的结果是
    RootFolder=/sites/Project/Lists/List4/test
    它就是讨论list地址+讨论主题。
FolderCTID参数:偿试删除之后也可以访问到讨论板,也找不到它意思,所以就不加了。

       /// <summary>
       /// An item was added.
       /// </summary>
      public override void ItemAdded(SPItemEventProperties properties)
       {
           base.ItemAdded(properties);
           if (properties.ListTitle == "项目探讨")
           {
               try
               {
                   using (SPWeb web = properties.OpenWeb())
                   {
                       string userName = web.CurrentUser.Name;
                       string projectName = web.Title;
                       string projectUrl = web.Url;
                       SPList list = web.Lists[properties.ListId];
                       string title = list.Fields.GetField("主题").InternalName;
                       string titleValue = properties.ListItem[title].ToString();
                       //获取讨论板link  
                      //properties.List.DefaultDisplayFormUrl  为显示list的默认地址,可找到讨论板list地址;
                       string tmpUrl = properties.List.DefaultDisplayFormUrl.Substring     (0, properties.List.DefaultDisplayFormUrl.LastIndexOf('/'));
                       string RootFolder = tmpUrl + "/" + titleValue;
                       //url转码,避免含中文时地址出错
                       RootFolder = System.Web.HttpUtility.UrlEncode(RootFolder);
                       string discussionUrl = "http://" + Environment.MachineName + tmpUrl + "/Flat.aspx?RootFolder=" +RootFolder;
                   }
               }
               catch (Exception ex)
               {
               }
           }
       }

posted on 2012-01-30 16:21  向振文  阅读(416)  评论(0编辑  收藏  举报