To enable "Show Tool Bar" option in Document Web Part through Code
I am going to explain a scenario where I had an OOB Document Web Part in one of my page and from code i had to enable the "Show Tool Bar" for that Web Part.
The scenario can be achieved through reflection. The code is given below.
splist -> The Document Library List
webpartID -> Id of the Document Web Part added to the page
private static void SetToolbar(SPList splist, string webpartID)
{
SPWeb web = splist.ParentWeb;
SPLimitedWebPartManager manager = web.GetLimitedWebPartManager("default.aspx", System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
SPLimitedWebPartCollection webPartColl = manager.WebParts;
XsltListViewWebPart wp = webPartColl[webpartID] as XsltListViewWebPart;
if (wp != null)
{
MethodInfo ensureViewMethod = wp.GetType().GetMethod("EnsureView", BindingFlags.Instance | BindingFlags.NonPublic);
object[] ensureViewParams = { };
ensureViewMethod.Invoke(wp, ensureViewParams);
FieldInfo viewFieldInfo = wp.GetType().GetField("view", BindingFlags.NonPublic | BindingFlags.Instance);
SPView view = viewFieldInfo.GetValue(wp) as SPView;
Type[] toolbarMethodParamTypes = { Type.GetType("System.String") };
MethodInfo setToolbarTypeMethod = view.GetType().GetMethod("SetToolbarType", BindingFlags.Instance | BindingFlags.NonPublic, null, toolbarMethodParamTypes, null);
object[] setToolbarParam = { "ShowToolbar" };
setToolbarTypeMethod.Invoke(view, setToolbarParam);
view.Update();
}
}
Comments
Anonymous
November 03, 2013
It works but unable to edit page. Have u experienced that issueAnonymous
March 05, 2016
Brilliant!