using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace XSLTListView.DiscussionBoard
{
public partial class DiscussionBoardUserControl : UserControl
{
XsltListViewWebPart lvp = new XsltListViewWebPart();
string query = “<Where><Or><Membership Type=’CurrentUserGroups’><FieldRef Name=’AssignTo’/></Membership><Eq><FieldRef Name=’AssignTo’/><Value Type=’Integer’><UserID Type=’Integer’/></Value></Eq></Or></Where>”;
protected void Page_Load(object sender, EventArgs e)
{
CreateListViewWebPart(lvp, “DiscussionBoard”, “Subject”, query, “placeholder”);
}
private void CreateListViewWebPart(XsltListViewWebPart lvwp, string ListName, string viewName, string strQuery, string pnl)
{
try
{
SPSite site = SPContext.Current.Site; //Don’t use “using” that causes an error
SPWeb web = SPContext.Current.Web; //”Trying to use an SPWeb object that has been closed or disposed and is no longer valid”
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.Url.ToString()))
{
using (SPWeb elevatedWeb = elevatedSite.RootWeb)
{
elevatedWeb.AllowUnsafeUpdates = true;
string webname=elevatedWeb.ToString().Replace(@”/”,””);
SPList list =elevatedSite.AllWebs[elevatedWeb.Title].Lists[ListName];
lvwp.ListName = list.ID.ToString(“B”).ToUpper();
lvwp.Title = “Item Fields”;
//Get the default view of the list
SPView webPartView = list.Views[viewName]; //The View of the List
webPartView.ViewEmpty = “There is no match in the list”; //Message if the view has no item to display
webPartView.Query = Convert.ToString(strQuery); //which assigned to the webPartView
//Upadtes a webPartView
webPartView.Update(); //Update view
lvwp.ViewGuid = webPartView.ID.ToString(“B”).ToUpper(); //Assign view Id
//lvwp.ManualRefresh = true;
elevatedWeb.AllowUnsafeUpdates = false;
}
}
});
placeholder.Controls.Add(lvwp);
}
catch (Exception ex)
{
throw ex;
}
}
}
}