Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Sometimes, it may be necessary to set the “QueryText” attribute of the Content Search Web Part Programmatically :
Here’s the existing structure in “Microsoft.Office.Server.Search.dll” :
In order to override the QueryText attribute, you can override the BeforeSerializeToClient event :
public class CustomContentBySearchWebPart : ContentBySearchWebPart
{
public CustomContentBySearchWebPart() { }
protected override void OnLoad(EventArgs e)
{
if (this.AppManager != null)
{
if (this.AppManager.QueryGroups.ContainsKey(this.QueryGroupName) &&
this.AppManager.QueryGroups[this.QueryGroupName].DataProvider != null)
{
this.AppManager.QueryGroups[this.QueryGroupName].DataProvider.BeforeSerializeToClient +=
new BeforeSerializeToClientEventHandler(EnhanceQuery);
}
}
base.OnLoad(e);
}
private void EnhanceQuery(object sender, BeforeSerializeToClientEventArgs e)
{
DataProviderScriptWebPart dataProvider = sender as DataProviderScriptWebPart;
dataProvider.QueryTemplate = “ACTUAL QUERY”;
}
}
Comments
Anonymous
January 20, 2013
dataProvider.QueryTemplate = “ACTUAL QUERY”; What is the format of actual queryAnonymous
January 25, 2013
@SP2013: query would look something like below: dataProvider.QueryTemplate = "(owstaxidMyProperty:"some value" OR MyManagedProperty:"some value");Anonymous
April 08, 2013
I wanted to add Content Search Web Part dynamically using C# code on Feature activated event. How do I set the Query from there? Example: ContentSearchWebPart csWebPart = new ContentSearchWebPart(); //Set query hereAnonymous
April 18, 2013
It might be easier if you use the DataProviderJson-Property. You can find an example here: carepoint.blogspot.co.at/.../setting-dataprovider-for.htmlAnonymous
July 30, 2013
Hi, i've been working without success in enable the fql syntax, without using /_api/search. I mean, trying to intercept ProcessQuery and attach enablefql, and sourceid. It's possible from here or there are another way to do this? Thanks in advanceAnonymous
June 16, 2014
I found I had to invoke base.OnLoad(e); before the test for if (this.AppManager != null) in the onLoad event, or the setting chagnes in the EnhanceQuery method did not take effect.Anonymous
October 12, 2014
do you have also a jquery script that can retrieve the query text? I want to add that script on my display template and do some validations