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.
This sample SharePoint webpart is meant to do search using search web service and result the result and show it on SPGridView.
create a new class library in visual studio and paste the below code.
using System;
using System.Data;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.Office.Server.Search;
using Microsoft.Office.Server.Search.WebControls;
using System.IO;
using Microsoft.Office.Server.Search.Query;
using System.Globalization;
namespace SampleGridViewTest
{
public class ErrorTrap
{
public void LogTheMessage(string myMessage)
{
using (StreamWriter sw = new StreamWriter("C:\\error.txt"))
{
sw.Write(myMessage.ToString());
}
}
}
[Guid("7586970D-0EE6-446b-875F-CFE71052C171")]
public class SampleGridViewClass : Microsoft.SharePoint.WebPartPages.WebPart
{
SPGridView GridView1 = new SPGridView();
ObjectDataSource DataSource1 = new ObjectDataSource();
Button Submit = new Button();
TextBox Search = new TextBox();
public static DataTable FillDataTable(string SearchText)
{
try
{
if (SearchText != null)
{
StringBuilder query = new StringBuilder();
query.Append("<QueryPacket xmlns='urn:Microsoft.Search.Query'>");
query.Append("<Query><SupportedFormats><Format revision='1'>urn:Microsoft.Search.Response.Document:Document</Format></SupportedFormats>");
query.Append("<Context><QueryText language='en-US' type=\"MSSQLFT\">");
query.Append("SELECT Size, Rank, HitHighLightedSummary, Path, Title, author, Description, Write FROM scope()");
query.Append("WHERE (\"SCOPE\" = 'TCS') AND FREETEXT(DEFAULTPROPERTIES,'" + SearchText.ToString() + "')");
query.Append("ORDER BY Rank desc</QueryText></Context><Range><StartAt>1</StartAt><Count>5000</Count></Range><TrimDuplicates>false</TrimDuplicates><IgnoreAllNoiseQuery>false</IgnoreAllNoiseQuery><IncludeRelevantResults>true</IncludeRelevantResults><IncludeHighConfidenceResults>false</IncludeHighConfidenceResults><EnableStemming>false</EnableStemming></Query></QueryPacket>");
QueryWebService.QueryService queryService = new QueryWebService.QueryService();
queryService.Url = "https://testserver1:7045/_vti_bin/search.asmx";
queryService.PreAuthenticate = true;
queryService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
System.Data.DataSet queryResults = queryService.QueryEx(query.ToString());
return queryResults.Tables[0];
}
else
{
return null;
}
}
catch (Exception ex)
{
ErrorTrap e = new ErrorTrap();
e.LogTheMessage("FillDataTable" + ex.Message + Environment.NewLine + ex.StackTrace.ToString());
return null;
}
}
public void Submit_Click(object sender, EventArgs e)
{
try
{
Parameter p = new Parameter("SearchText", DbType.String, Search.Text);
DataSource1.SelectParameters["SearchText"] = p;
GridView1.DataBind();
}
catch (Exception ex)
{
ErrorTrap f = new ErrorTrap();
f.LogTheMessage("SubmitClick" + ex.Message + Environment.NewLine + ex.StackTrace.ToString());
}
}
public void CreateGrid()
{
if (Page.IsPostBack == true)
{
GridView1 = new SPGridView();
GridView1.AutoGenerateColumns = false;
GridView1.PageSize = 10;
GridView1.AllowPaging = true;
GridView1.PagerStyle.HorizontalAlign = HorizontalAlign.Center;
GridView1.PageIndexChanging += new GridViewPageEventHandler(GridView1_PageIndexChanging);
CreateGridViewColumns("Size");
CreateGridViewColumns("Rank");
CreateGridViewColumns("HitHighLightedSummary");
CreateGridViewColumns("Path");
CreateGridViewColumns("Title");
CreateGridViewColumns("author");
CreateGridViewColumns("Description");
CreateGridViewColumns("Write");
DataSource1 = new ObjectDataSource();
string strTypeName = "SampleGridViewTest,";
strTypeName += Assembly.GetExecutingAssembly().FullName;
DataSource1.TypeName = String.Format("{0},{1}", this.GetType().FullName, Assembly.GetExecutingAssembly().FullName);
DataSource1.SelectMethod = "FillDataTable";
DataSource1.SelectParameters.Add("SearchText", "");
DataSource1.SelectParameters["SearchText"].Direction = ParameterDirection.Input;
DataSource1.ID = "MyDataSource";
Controls.Add(DataSource1);
GridView1.DataSourceID = DataSource1.ID;
Controls.Add(GridView1);
GridView1.PagerTemplate = null;
}
}
protected override void CreateChildControls()
{
Submit = new Button();
Submit.Text = "Search";
Submit.Click += new EventHandler(Submit_Click);
Controls.Add(Submit);
Search = new TextBox();
Search.Text = "";
Controls.Add(Search);
CreateGrid();
base.CreateChildControls();
}
protected override void RenderWebPart(HtmlTextWriter output)
{
base.RenderWebPart(output);
}
private void CreateGridViewColumns(string strColumn)
{
BoundField oGridColumn = new BoundField();
oGridColumn.DataField = strColumn;
oGridColumn.HeaderText = strColumn;
oGridColumn.Visible = true;
GridView1.Columns.Add(oGridColumn);
}
void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
}
}
}