Have you ever found a scenario where you would like to edit the configurations of native webpart but don’t want to mess it by creating a custom one? In this case you should consider the use of second webpart to do all the messy configurations.
The following example shows how you you can create a custom webpart that modifies the search query string of a content search web part that exists in the same page.
Setup: Add a visual web part to your SharePoint project and add the Newton-King Json.NET reference to your project
- On Visual Studio, open your project solution, right click your project folder and select “Add Item “
- In the Add New Item menu select “Office/SharePoint” -> VisualWebPart, give a name ex: “WebPartConfigurator”
- Add James Newton-King Json.NET .dll to your project. This will make it extremely easy to edit the search query once you get it from the target webpart. (you can find it here: http://james.newtonking.com/json)
Code: Follow 3 steps -> Get the the LimitedWebPartManager, get the target content search webpart, configure the query string in the target content search webpart.
1. Add the following to your class header:
using System.Linq; //For accessing the web part using Newtonsoft.Json.Linq; // For editing the webparts search query (Json). Don't forget to add a reference to this lib on your project.
2. Uncomment PageLoad method and add the following code:
//Get the page
SPFile membersPage = SPContext.Current.File;
SPLimitedWebPartManager limitedWebpartManager;
//Get the page's Limited Web Part Manager using (limitedWebPartManager = membersPage.GetLimitedWebPartManager(PersonalizationScope.Shared)) { ////Gets all the the webpart with "YOUR_WEB_PART_NAME_HERE" name if they exist System.Collections.Generic.List<System.Web.UI.WebControls.WebParts.WebPart> searchWebParts = limitedWebPartManager.WebParts.Cast<System.Web.UI.WebControls.WebParts.WebPart>().Where(webpart => webpart.Title == "YOUR_WEB_PART_NAME").ToList(); ////If any web part is found runs the configuration method "ConfigureWebpart" on it if (membersWebParts.Count > 0) { foreach (System.Web.UI.WebControls.WebParts.WebPart webPart in membersWebParts) { ////Run the configuration method on your target webpart ConfigureWebPart(webPart); ////Save all the changes made to your target webpart!!!!!!! limitedWebPartManager.SaveChanges(webPart); } } } ////Updates all the changes made to the page elements membersPage.Update();
3. Add your ConfigureWebPart method. In this case we will change the query string using Newtons-King Json.net lib.
private void ConfigureMembersWebPart(System.Web.UI.WebControls.WebParts.WebPart webPart)
{
////Cast the webpart to a ContentSearchWebPart (ResultScriptWebPart in .Net)
ResultScriptWebPart membersWebPart = (ResultScriptWebPart)webPart;
////Get the query object
JObject query = JObject.Parse(membersWebPart.DataProviderJSON);
////Edit the query object
query.Property("QueryTemplate").Value = "YOUR_QUERY_HERE";
////Set the webpart's query object to the newly edited object.
membersWebPart.DataProviderJSON = query.ToString();
}
Finishing: Add the custom web part to the page of the target webpart.

![[FIX] BizTalk Server 2010, 2013, 2013 R2 & 2016 errors “Class not registered (WinMgmt)” or “Access denied”](https://blogit.create.pt/wp-content/uploads/2018/07/access-black-and-white-blur-270514-218x150.jpg)
















