• sharepoint 讨论板编程


    SharePoint Discussion Board Common Operations through Code

    1) Take instance of your site collection and web:

    SPSite currentSite = SPContext.Current.Site;
    SPWeb currentRootWeb = currentSite.RootWeb;

    2) Suppose we have the name of discussion list - "MyDiscussionList".

    Get GUID of this list:

    Guid myDiscussionListGUID = Guid.NewGuid();

    foreach (SPList list in currentRootWeb.Lists)

    {

    if (list.BaseTemplate.ToString() == "DiscussionBoard" && list.Title == "MyDiscussionList")

    {

    myDiscussionListGUID = list.ID; // Read GUID of Discussion List

    break;

    }

    }

    Tips:

    a) list.ItemCount will return all discussions and their replies

    b) list.Items.Count will return only replies

    3) Get your list:

    SPList myDiscussionList = currentRootWeb.Lists.GetList(myDiscussionListGUID, false);

    4) Create a new Discussion:

    SPListItem newItem = SPUtility.CreateNewDiscussion(myDiscussionList.Items, "New Message using code");
    newItem["Body"] = "My new message content using code";
    newItem.Update();

    5) How to read all discussions:

    foreach (SPListItem folder in myDiscussionList.Folders)
    {
    Response.Write("Folder Name: " + folder.Name + "<BR>");
    Response.Write("Folder ID: " + folder.ID + "<BR>");
    Response.Write("Attachments Count: " + folder.Attachments.Count + "<BR>"); // Returns attachment count


    // Code to read attachment URL.

    for (int i = 0; i < folder.Attachments.Count; i++)
    {
    Response.Write("Attachment Url " + folder.Attachments.UrlPrefix + folder.Attachments + "<BR>");
    }

    // Read body of attachment

    Response.Write("Body: " + folder.Fields["Body"].GetFieldValueAsText(folder["Body"]) + "<BR>");
    }

    6) If you want to delete a discussion:

    SPListItem listItemParentToDelete = null;

    foreach (SPListItem folder in myDiscussionList.Folders)
    {
    listItemParentToDelete = folder;

    }

    if (listItemParentToDelete != null)
    {
    listItemParentToDelete.Delete();
    }


    7) Loop through all discussion replies:

    foreach (SPListItem listItem in myDiscussionList.Items)

    {

    Response.Write("Item DisplayName: " + listItem.DisplayName + "<BR>"); // Returns Title of Discussion
    Response.Write("List ID: " + listItem.ID + "<BR>");
    Response.Write("List Folder ID: " + listItem.Fields["Parent Folder Id"].GetFieldValueAsText(listItem["Parent Folder Id"]).ToString() + "<BR>"); // Returns ID of Parent Discussion
    Response.Write("Body: " + listItem.Fields["Body"].GetFieldValueAsText(listItem["Body"]) + "<BR>");

    // Create Parent List Item
    int parentListID = Convert.ToInt32(listItem.Fields["Parent Folder Id"].GetFieldValueAsText(listItem["Parent Folder Id"]));
    SPListItem parentListItem = lvContentItemsDiscussionsList.GetItemById(parentListID);
    Response.Write("Parent List Item Name: " + parentListItem.Name + "<BR>");

    // Code to Reply to a Discussion Message
    SPListItem reply = SPUtility.CreateNewDiscussionReply(parentListItem);
    reply["Body"] = "<div class=ExternalClass89C47CD7892B4279A8F42A65DD63AE3A><div> </div> <div>Reply to the new message<br><br> <hr> <b>From: </b>Admin<br><b>Posted: </b>Friday, July 20, 2007 4:01 AM<br><b>Subject: </b>New message<br><br> <div class=ExternalClass3D04672E599B486F9ECB76C138494708> <div>My new message content</div></div></div></div>";
    reply["TrimmedBody"] = "<div class=ExternalClass677134B4EA284660B1B236824800345C><div> </div> <div>Reply to the new message<br></div></div>";
    reply.Update();


    // Code to delete a discussion reply
    listItemToDelete = listItem;

    }


    8) Code to delete a discussion reply:

    SPListItem listItemToDelete = null;

    foreach (SPListItem listItem in myDiscussionList.Items)

    {

    listItemToDelete = listItem;

    }

    // Code to delete a discussion reply
    if (listItemToDelete != null)
    {
    listItemToDelete.Delete();
    }

    Note: You need to allow unsafe updates in order to do any operation on SharePoint list directly.

    currentRootWeb.AllowUnsafeUpdates = true;

  • 相关阅读:
    在bindingNavigator1中加入具有更好体验性的DateTimePicker
    static的初始化顺序 (转)
    C#数据结构求最大公约数和最小公倍数[辗转相除法]
    DataGridView控件显示行号
    C# 小票打印机 直接打印 无需驱动[转]
    Core Data 中遇到的一些问题
    字符指针不分配存储区,字符常量存储于静态数据区
    传送门
    Error Set
    实现类似iPhone通讯录新增名片,保存,之后可进行编辑操作的功能
  • 原文地址:https://www.cnblogs.com/icedog/p/1771093.html
Copyright © 2020-2023  润新知