Normally we bind SPgridView with datatable but
SPGridView becomes null on page load after postback ,so to maintain its data "ObjectDatasource"
is used.
You can also apply filtering by sending field names in "FilterDataFields"
property on which fields you want filter.
It will work as DataFormWebpart.
Add below code in page init function :
odsDataSource.ID =
"odsDataSource";
odsDataSource.SelectMethod =
"GetDataTable";
var assemblyQualifiedName =
GetType().AssemblyQualifiedName;
if
(assemblyQualifiedName != null)
odsDataSource.TypeName = assemblyQualifiedName;
odsDataSource.ObjectCreating
+= odsDataSource_ObjectCreating;
odsDataSource.ObjectDisposing
+= odsDataSource_ObjectDisposing;
odsDataSource.Filtering +=
GridViewDocumentMaster_Filtering;
Controls.Add(odsDataSource);
GridViewDocumentMaster.PagerTemplate = null;
GridViewDocumentMaster.AllowFiltering = true;
GridViewDocumentMaster.FilterDataFields = ",Id,DocumentTitle,DocumentNumber,,,";
GridViewDocumentMaster.FilteredDataSourcePropertyName =
"FilterExpression";
GridViewDocumentMaster.FilteredDataSourcePropertyFormat =
"{1} = '{0}'";
GridViewDocumentMaster.EnableViewState = false;
Then Add below functions Change Gridview Name
///
<summary>
///
Handles the Filtering event of the SPGridViewMappedDocs control.
///
</summary>
///
<param
name="sender">The
source of the event.</param>
///
<param
name="e">The
<see cref="System.Web.UI.WebControls.ObjectDataSourceFilteringEventArgs"/>
instance containing the event data.</param>
///
<remarks></remarks>
private
void GridViewDocumentMaster_Filtering(object
sender, ObjectDataSourceFilteringEventArgs e)
{
ViewState["FilterExpression"]
= ((ObjectDataSourceView)sender).FilterExpression;
}
///
<summary>
///
Handles the ObjectCreating event of the odsDataSource control.
///
</summary>
///
<param
name="sender">The
source of the event.</param>
///
<param
name="e">The
<see cref="System.Web.UI.WebControls.ObjectDataSourceEventArgs"/>
instance containing the event data.</param>
///
<remarks></remarks>
private
void odsDataSource1_ObjectCreating(object
sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance =
this;
}
///
<summary>
///
Handles the ObjectDisposing event of the odsDataSource control.
///
</summary>
///
<param
name="sender">The
source of the event.</param>
///
<param
name="e">The
<see cref="System.Web.UI.WebControls.ObjectDataSourceDisposingEventArgs"/>
instance containing the event data.</param>
///
<remarks></remarks>
protected
void odsDataSource1_ObjectDisposing(object
sender, ObjectDataSourceDisposingEventArgs e)
{
e.Cancel =
true;
}`
///
<summary>
// ReSharper
disable CSharpWarnings::CS1584
///
Sends server control content to the specified
<see cref="T:System.Web.UI."/><see
cref="HtmlTextWriter"/>
object, which writes the content to be rendered on the client.
// ReSharper
restore CSharpWarnings::CS1584
///
</summary>
// ReSharper
disable CSharpWarnings::CS1584
///
<param
name="writer">The
<see cref="T:System.Web.UI."/><see cref="HtmlTextWriter"/>
object that receives the rendered content.</param>
// ReSharper
restore CSharpWarnings::CS1584
///
<remarks></remarks>
[PermissionSet(SecurityAction.LinkDemand,
Name = "FullTrust")]
protected
override void
Render(HtmlTextWriter writer)
{
GridViewDocumentMaster.DataBind();
SPGridViewMappedDocs.DataBind();
base.Render(writer);
}
///
<summary>
///
Restores view-state information from a previous page request that was saved by
the
<see cref="M:System.Web.UI.Control.SaveViewState"/>
method.
///
</summary>
///
<param
name="savedState">An
<see cref="T:System.Object"/>
that represents the control state to be restored.</param>
///
<remarks></remarks>
protected
sealed override
void LoadViewState(object
savedState)
{
base.LoadViewState(savedState);
if
(Context.Request.Form["__EVENTARGUMENT"] !=
null &&
Context.Request.Form["__EVENTARGUMENT"].EndsWith("__ClearFilter__"))
{
// Clear
FilterExpression
ViewState["FilterExpression"]
= null;
//ViewState["FilterExpressionMappedDocs"]
= null;
ViewState.Clear();
//ViewState.Remove("FilterExpression");
}
}