This is a migrated thread and some comments may be shown as answers.

[Solved] Filter Expression Applied But Does Not Display

1 Answer 170 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Larry
Top achievements
Rank 1
Larry asked on 07 Jul 2009, 08:22 PM
Hey,

We are programatically creating and saving grids.    We have a button that allows the user to save the current state of the grid.  The problem we are having is that when we retrieve the grid the filter expression is applied to the grid data which is correct but you don't see the filter value in the filter box over the column nor do you see where the "Equal To" or "Contains" has been set when you click on the down arrow next to the filter value.  I've attached the savesettings and loadsetting methods we are using.  Is there something else we need to set?

Thanks,
Larry

        public void SaveSettings(int reportid, string reportname)  
        {  
            object[] gridSettings = new object[4];  
 
            //Save groupBy  
            GridGroupByExpressionCollection groupByExpressions = this.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)this.MasterTableView.SortExpressions).SaveViewState();  
 
            //Save columns order and visibility  
            int columnsLength = this.MasterTableView.Columns.Count +  
             this.MasterTableView.AutoGeneratedColumns.Length;  
 
            string[] columnOrder = new string[columnsLength];  
            bool[] columnVisible = new bool[columnsLength];  
 
            ArrayList allColumns = new ArrayList(columnsLength);  
 
            allColumns.AddRange(this.MasterTableView.Columns);  
            allColumns.AddRange(this.MasterTableView.AutoGeneratedColumns);  
 
            int i = 0;  
            foreach (Telerik.Web.UI.GridColumn column in allColumns)  
            {  
                columnOrder[i] = column.UniqueName;  
                columnVisible[i] = column.Visible;  
                i++;  
            }  
 
            gridSettings[2] = columnOrder;  
 
            //Save filter expression  
            gridSettings[3] = (object)this.MasterTableView.FilterExpression;  
 
            RemoteUser _user = ((RemoteUser)Context.User);  
 
            SqlHelper.Execute("user_custom_report_create_p" , _user.UserId , reportid , reportname, _user.CurrentCustomerID ,  _user.CurrentPeriod , GridHelper.Serialize(columnOrder, GridHelper.SeralizeType.LOS) ,GridHelper.Serialize(gridSettings[1], GridHelper.SeralizeType.LOS), GridHelper.Serialize(gridSettings[3], GridHelper.SeralizeType.LOS), GridHelper.Serialize(gridSettings[0], GridHelper.SeralizeType.LOS) , GridHelper.Serialize(columnVisible, GridHelper.SeralizeType.LOS));  
              
 
        }  
 
 
 
        //this method should be called on PageInit  
        public void LoadSettings(int reportid)  
        {  
 
            object[] _columns = new object[5];  
            RemoteUser _user = ((RemoteUser)Context.User);  
 
              
            // go get the report settings  
            // if we cant find the reportid for this userid, throw an exception  
 
            DataTable _tbl = SqlHelper.ExecuteDataset("user_custom_report_get_p" , _user.UserId , reportid).Tables[0];  
 
            if (_tbl.Rows.Count == 0)  
                throw new Exception("The user custom report is not valid + userid: " + _user.UserId.ToString() + " reportid: " + reportid.ToString());  
              
            //TODO: check security to make sure the user has access to the customerid  
            //if ( _user.Customers.  _tbl.Rows[0]["CustomerID"].ToString()   
 
 
            HttpContext.Current.Session["CustomerID"] = _user.CurrentCustomerID = _tbl.Rows[0]["CustomerID"].ToString();  
            HttpContext.Current.Session["BillYYYYMM"] = _user.CurrentPeriod = _tbl.Rows[0]["billyyyymm"].ToString();  
 
 
            // Now get the string array of columns and use this.AddColumns  
            this.AddColumns((string[])GridHelper.DeSerialize(_tbl.Rows[0]["columns"].ToString() , GridHelper.SeralizeType.LOS));  
 
            //Load groupBy  
            this.MasterTableView.GroupByExpressions.Clear();  
            int count = 0;  
            foreach (object obj in ((object[])GridHelper.DeSerialize(_tbl.Rows[0]["groupby"].ToString() , GridHelper.SeralizeType.LOS)))  
            {  
                GridGroupByExpression expression = new GridGroupByExpression();  
                ((IStateManager)expression).LoadViewState(obj);  
                this.MasterTableView.GroupByExpressions.Add(expression);  
                count++;  
            }  
 
 
            //Load sort expressions  
            this.MasterTableView.SortExpressions.Clear();  
            ((IStateManager)this.MasterTableView.SortExpressions).LoadViewState((GridHelper.DeSerialize(_tbl.Rows[0]["sort"].ToString(), GridHelper.SeralizeType.LOS)));  
 
 
 
            this.MasterTableView.FilterExpression = (GridHelper.DeSerialize(_tbl.Rows[0]["filter"].ToString() , GridHelper.SeralizeType.LOS)).ToString();  
              
        }  
 

1 Answer, 1 is accepted

Sort by
0
Yavor
Telerik team
answered on 10 Jul 2009, 08:29 AM
Hi Larry,

Indeed, in such a scenario the filter expression will not be displayed. One possible option in this case would be to get a reference to the filter textox and set the value:
http://www.telerik.com/help/aspnet-ajax/grdsettingfiltertextboxdimensions.html

Alternatively, you can use the CurrentFilterFunction/CurrentFilterValue properties for the respective columns, to set these values directly.
I hope these suggestions help.

Regards,
Yavor
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
Tags
Grid
Asked by
Larry
Top achievements
Rank 1
Answers by
Yavor
Telerik team
Share this question
or