7 Answers, 1 is accepted

Go through the following help document link.
Saving grid settings on a per user basis
Thanks
Shinu.

if
(Session["RadGridSettings"] != null)
{
GridSettingsPersister gs = new GridSettingsPersister(RadGrid1);
gs.LoadSettings(Session[
"RadGridSettings"].ToString());
}
and the filter works but it doesn't put the "Fa" back in the FilterTextBox of the "Last Name" Column. Is there a way to get this to show up?



public
class GridSettingsPersister
{
private RadGrid gridInstance;
public GridSettingsPersister(RadGrid gridInstance)
{
this.gridInstance = gridInstance;
}
//this method should be called on Render
public string SaveSettings()
{
object[] gridSettings = new object[7];
//Save groupBy
GridGroupByExpressionCollection groupByExpressions = gridInstance.MasterTableView.GroupByExpressions;
object[] groupExpressions = new object[groupByExpressions.Count];
int count = 0;
foreach (GridGroupByExpression expression in groupByExpressions)
{
groupExpressions[count] = ((
IStateManager)expression).SaveViewState();
count++;
}
gridSettings[0] = groupExpressions;
//Save sort expressions
gridSettings[1] = ((
IStateManager)gridInstance.MasterTableView.SortExpressions).SaveViewState();
//Save columns order
int columnsLength = gridInstance.MasterTableView.Columns.Count +
gridInstance.MasterTableView.AutoGeneratedColumns.Length;
Pair[] columnOrder = new Pair[columnsLength];
ArrayList allColumns = new ArrayList(columnsLength);
allColumns.AddRange(gridInstance.MasterTableView.Columns);
allColumns.AddRange(gridInstance.MasterTableView.AutoGeneratedColumns);
int i = 0;
foreach (GridColumn column in allColumns)
{
Pair p = new Pair();
p.First = column.OrderIndex;
p.Second = column.HeaderStyle.Width;
columnOrder[i] = p;
i++;
}
gridSettings[2] = columnOrder;
//Save filter expression
gridSettings[3] = (
object)gridInstance.MasterTableView.FilterExpression;
//Save AllowFilteringByColumn setting
gridSettings[4] = (
object)gridInstance.MasterTableView.AllowFilteringByColumn;
//Save Filter Column Headings Text
Pair[] columnOrder2 = new Pair[columnsLength];
ArrayList allColumns2 = new ArrayList(columnsLength);
allColumns2.AddRange(gridInstance.MasterTableView.Columns);
allColumns2.AddRange(gridInstance.MasterTableView.AutoGeneratedColumns);
int r = 0;
foreach (GridColumn column in allColumns2)
{
Pair p = new Pair();
p.First = column.CurrentFilterFunction;
p.Second = column.CurrentFilterValue;
columnOrder2[r] = p;
r++;
}
gridSettings[5] = columnOrder2;
LosFormatter formatter = new LosFormatter();
StringWriter writer = new StringWriter();
formatter.Serialize(writer, gridSettings);
return writer.ToString();
}
//this method should be called on PageInit
public void LoadSettings(string settings)
{
LosFormatter formatter = new LosFormatter();
StringReader reader = new StringReader(settings);
object[] gridSettings = (object[])formatter.Deserialize(reader);
//Load groupBy
GridGroupByExpressionCollection groupByExpressions = this.gridInstance.MasterTableView.GroupByExpressions;
groupByExpressions.Clear();
object[] groupExpressionsState = (object[])gridSettings[0];
int count = 0;
foreach (object obj in groupExpressionsState)
{
GridGroupByExpression expression = new GridGroupByExpression();
((
IStateManager)expression).LoadViewState(obj);
groupByExpressions.Add(expression);
count++;
}
//Load sort expressions
this.gridInstance.MasterTableView.SortExpressions.Clear();
((
IStateManager)this.gridInstance.MasterTableView.SortExpressions).LoadViewState(gridSettings[1]);
//Load columns order
int columnsLength = this.gridInstance.MasterTableView.Columns.Count +
this.gridInstance.MasterTableView.AutoGeneratedColumns.Length;
Pair[] columnOrder = (Pair[])gridSettings[2];
if (columnsLength == columnOrder.Length)
{
ArrayList allColumns = new ArrayList(columnsLength);
allColumns.AddRange(
this.gridInstance.MasterTableView.Columns);
allColumns.AddRange(
this.gridInstance.MasterTableView.AutoGeneratedColumns);
int i = 0;
foreach (GridColumn column in allColumns)
{
column.OrderIndex = (
int)columnOrder[i].First;
column.HeaderStyle.Width = (
Unit)columnOrder[i].Second;
i++;
}
}
//Load AllowFilteringByColumn setting
this.gridInstance.MasterTableView.AllowFilteringByColumn = (bool)gridSettings[4];
//Load filter expression
this.gridInstance.MasterTableView.FilterExpression = (string)gridSettings[3];
//Load Filter columns text
Pair[] columnOrder2 = (Pair[])gridSettings[5];
if (columnsLength == columnOrder2.Length)
{
ArrayList allColumns = new ArrayList(columnsLength);
allColumns.AddRange(
this.gridInstance.MasterTableView.Columns);
allColumns.AddRange(
this.gridInstance.MasterTableView.AutoGeneratedColumns);
int i = 0;
foreach (GridColumn column in allColumns)
{
column.CurrentFilterFunction = (
GridKnownFunction)columnOrder2[i].First;
column.CurrentFilterValue = (
string)columnOrder2[i].Second;
i++;
}
}
}
}

It's working for me too!! :-)

I've gone through the documentation to which you've already provided a link.
Eric Skaggs