Как получить URL-адрес для записи в дискуссионной доске SharePoint? - PullRequest
1 голос
/ 07 июня 2009

Как вы получаете URL для элемента доски обсуждений? То есть URL-адрес, отображаемый при наведении мыши на строку темы (после добавления списка на страницу в качестве веб-части).

Ответы [ 7 ]

1 голос
/ 19 октября 2010
    protected global::System.Web.UI.WebControls.GridView gvForum;
    public string Region
    {
        get
        {
            return "";
        }
    }
    public string DefaultRegion { get; set; }
    public int Top { get; set; }
    public string ListName
    {
        get
        {

            string listName=string.Empty;
            if (!string.IsNullOrEmpty(this.Region))
                listName=string.Format("{0} {1}","Forum",this.Region);
            else
                listName = string.Format("{0} {1}", "Forum", this.DefaultRegion);
            return listName;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGrid();
        }
    }

    private void BindGrid()
    {
        string region = this.Region;
        string caml=@"<OrderBy><FieldRef Name=""Modified"" /></OrderBy>";
        try
        {
            using (SPSite spSite = new SPSite(SPContext.Current.Site.Url))
            {
                using (SPWeb spWeb = spSite.OpenWeb())
                {
                    SPQuery spQ = new SPQuery();
                    spQ.Query = caml;
                    spQ.RowLimit = (uint)this.Top;
                    SPList spList = spWeb.Lists[ListName];
                    SPListItemCollection items = spList.GetItems(spQ);
                    if (items != null && items.Count > 0)
                    {
                        gvForum.DataSource = items;
                        gvForum.DataBind();
                    }
                    else
                    {
                        this.Visible = false;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Logger.Log(ex.Message, System.Diagnostics.EventLogEntryType.Error);
        }

    }
    protected void gvForum_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        SPListItem item = e.Row.DataItem as SPListItem;
        Label lblTitle = e.Row.FindControl("lblTitle") as Label;
        HtmlAnchor aURL = e.Row.FindControl("aURL") as HtmlAnchor;
        if (item != null)
        {
            if (lblTitle != null && aURL != null)
            {
                aURL.HRef = "~/" + item.Url;
                lblTitle.Text = item["Title"].ToString();


            }
        }
    }
1 голос
/ 19 октября 2010
protected void gvForum_RowDataBound(object sender, GridViewRowEventArgs e)
{
    SPListItem item = e.Row.DataItem as SPListItem;
    Label lblTitle = e.Row.FindControl("lblTitle") as Label;
    HtmlAnchor aURL = e.Row.FindControl("aURL") as HtmlAnchor;
    if (item != null)
    {
        if (lblTitle != null && aURL != null)
        {
            aURL.HRef = "~/" + item.Url;
            lblTitle.Text = item["Title"].ToString();                    
        }
    }
}
0 голосов
/ 09 октября 2017

Вы можете использовать столбец поля "TopicPageUrl", чтобы напрямую получить тему обсуждения, используя REST API URL

http://sp2013.in/_api/web/Lists/GetByTitle('Discussion')/Items?$select=Title,TopicPageUrl,DiscussionLastUpdated,Folder/ItemCount,LastReplyBy/Title,Author/Title&$expand=Folder,LastReplyBy,Author&$orderby=DiscussionLastUpdated desc

Приведенный выше код также полезен для получения последнего обновления обсуждения, количества ответов (сохраненных в папке), последнего ответа от.

0 голосов
/ 01 марта 2017

Чтобы сгенерировать прямой URL-адрес для определенного элемента обсуждения на стороне клиента (с помощью вызова REST API), вы можете попробовать это:

var jqXhr = $.ajax({
        url:"/DiscussionSite/_api/lists/getByTitle('Discussions')/items?
        $select=ID,FileRef,ContentTypeId,Title,Body&
        $filter=ContentType eq 'Discussion'",       
        headers: { 'Accept': 'application/json;odata=verbose'}
    });

// Fetch only the discussions from the Discussion list (excl. Messages)
jqXhr.done(function(data){
    // Picking only the first item for testing purpose
    // Feel free to loop through the response if necessary
    var firstItem = data.d.results[0],
    firstItemUrl = '/DiscussionSite/Lists/Discussions/Flat.aspx?RootFolder=' + firstItem.FileRef + '&FolderCTID' + firstItem.ContentTypeId;

    // Result - /DiscussionSite/Lists/Discussions/Flat.aspx?RootFolder=/DiscussionSite/Lists/Discussions/My Discussion Topic 1&FolderCTID0x01200200583C2BEAE375884G859D2C5A3D2A8C06
    // You can append "&IsDlg=1" to the Url for a popup friendly display of the Discussion Thread in a SharePoint Modal Dialog
    console.log(firstItemUrl);
});

Надеюсь, это поможет!

0 голосов
/ 13 января 2017

Возможно, у вас нет элемента списка, но если вы просто посмотрите на свойство «FileRef». Это будет выглядеть как "https://mycompany.sharepoint.com/sites/Lists/discussion/". Если я добавлю этот URL в браузер (я использую SharePoint Online), он перенаправит меня на https://mycompany.sharepoint.com/Lists/Discussion/Flat.aspx?RootFolder=... URL.

0 голосов
/ 11 июня 2010

Вы можете дать только название темы, например http://site/discussion/lists/discussionboard/discusontitlename или тему

0 голосов
/ 08 июня 2009

Вы спрашиваете, как найти URL для отдельного обсуждения на доске обсуждений? Или отдельный ответ на обсуждение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...