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

Grid sorting issue

2 Answers 26 Views
Grid
This is a migrated thread and some comments may be shown as answers.
RB
Top achievements
Rank 1
RB asked on 21 Jul 2014, 08:43 PM
I have a grid as follows. On first click it sorts one way. Than when I click on the arrow, the next column gets the sort arrow instead!
    class AssignBanGridCtrl : WebControl
    {
        #region Fields
        private RadAjaxLoadingPanel _RadLoadingPanel = new RadAjaxLoadingPanel();
        private UpdatePanel _UpdatePanel = new UpdatePanel();
        private RadGrid _RadGrid1 = new RadGrid();
        private PriceDealProductBanTable _PriceDealProductBanTable = new PriceDealProductBanTable();
        private PriceDealProposal _Proposal = null;    
        private GXButton _btnCopyToSelect = new GXButton();
        private GXButton _btnSaveSelected = new GXButton();
        private GXTextBox _TbBAN = new GXTextBox();
        public SmartOrderQuote OrderQuote;
        private string _BanColumnName;
        private string _ServiceColumnName;    
 
        #endregion     
 
        #region Constructors
 
        public AssignBanGridCtrl(PriceDealProposal proposal, bool hasOrderRequest)
            : base()
        {
        }    
 
        #endregion
 
        #region Overrides
 
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            this._ProductTable = new _ProductTable().ExecuteTypedDataTable();
            this._RadLoadingPanel.ID = "_RadLoadingPanel";
            this._RadLoadingPanel.Transparency = 30;
            this._RadLoadingPanel.Skin = "WebBlue";
            this._RadLoadingPanel.BackgroundPosition = AjaxLoadingPanelBackgroundPosition.Center;
            this.Controls.Add(this._RadLoadingPanel);
             
            #region Grid1
            this._RadGrid1.MasterTableView.CommandItemSettings.ShowAddNewRecordButton = false;
            this._RadGrid1.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;
            this._RadGrid.ID = "RadGrid1";
            this._RadGrid.Skin = "WebBlue";
            this._RadGrid.Width = Unit.Percentage(100);
            this._RadGrid.GridLines = GridLines.None;
            this._RadGrid.PageSize = 100;
            this._RadGrid.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric;
 
            this._RadGrid.AllowPaging = true;         
            this._RadGrid.AutoGenerateColumns = false;           
            this._RadGrid.EnableLinqExpressions = false;
            this._RadGrid.AllowAutomaticInserts = false;
            this._RadGrid.AllowAutomaticUpdates = false;
            this._RadGrid.AllowAutomaticDeletes = false; 
              
            if(this._ProductTable.Count>=100)
                this._RadGrid1.AllowFilteringByColumn = true;
            this._RadGrid1.AllowSorting = true;
            this._RadGrid1.MasterTableView.AllowNaturalSort = false;         
            
            this._RadGrid1.MasterTableView.DataKeyNames = new string[] { this._ProductTable.PriceDealEntityProductItemIdColumn.ColumnName };
            this._RadGrid1.MasterTableView.ClientDataKeyNames = new string[] { this._ProductTable.PriceDealEntityProductItemIdColumn.ColumnName };                                            
            this._RadGrid1.EnableLinqExpressions = false;         
 
            this._RadGrid1.MasterTableView.NoMasterRecordsText = "No Products found.";
            this._RadGrid1.MasterTableView.Width = Unit.Percentage(100);
             
            this._RadGrid1.ClientSettings.Selecting.AllowRowSelect = true;
            this._RadGrid1.ClientSettings.Selecting.UseClientSelectColumnOnly = true;
            this._RadGrid1.AllowMultiRowSelection = true;           
             
            this._RadGrid1.NeedDataSource += RadGrid1_NeedDataSource;
            this._RadGrid1.ItemDataBound += RadGrid1_ItemDataBound;
            this._RadGrid1.ItemCreated += RadGrid1_ItemCreated;
 
            GridBoundColumn boundColumn = new GridBoundColumn();
            string columnName;
            
            #region RadGrid Columns
            GridClientSelectColumn selectAll = new GridClientSelectColumn();
            selectAll.UniqueName = "SelectOne";
            this._RadGrid1.MasterTableView.Columns.Add(selectAll);
 
            string templateColumnName;
            GridTemplateColumn templateColumn = new GridTemplateColumn();
 
            columnName = this._ProductTable.SupplementalOriginalPriceDealEntityProductItemIdColumn.ColumnName; ;
            boundColumn = new GridBoundColumn();         
            boundColumn.DataField = columnName;
            boundColumn.UniqueName = "SupplementalOriginalPriceDealEntityProductItemId";
            boundColumn.Display = false;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);   
             
             columnName = this._ProductTable.IsCustomProductColumn.ColumnName; ;
            boundColumn = new GridBoundColumn();         
            boundColumn.DataField = columnName;
            boundColumn.UniqueName = "IsCustomProduct";
            boundColumn.Display = false;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);
 
            columnName = this._ProductTable.SupplementalActionCodeColumn.ColumnName; ;
            boundColumn = new GridBoundColumn();         
            boundColumn.DataField = columnName;
            boundColumn.UniqueName = "SupplementalActionCode";
            boundColumn.Display = false;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);
 
            columnName = this._ProductTable.IsLockedColumn.ColumnName; ;
            boundColumn = new GridBoundColumn();        
            boundColumn.DataField = columnName;
            boundColumn.UniqueName = "IsLocked";
            boundColumn.Display = false;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);
 
            columnName = this._ProductTable.DescriptionColumn.ColumnName; ;
            boundColumn = new GridBoundColumn();       
            boundColumn.DataField = columnName;
            boundColumn.HeaderText = "Location";
            boundColumn.UniqueName = "Location";
            boundColumn.SortExpression = columnName;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);           
 
            columnName = this._ProductTable.CatalogProductColumn.ColumnName;
            boundColumn = new GridBoundColumn();
            boundColumn.FilterTemplate = new DropdownTemplate(columnName, _RadGrid1, this._ProductTable.SelectDistinct(columnName));             
            boundColumn.DataField = columnName;
            boundColumn.HeaderText = "Product";
            boundColumn.UniqueName = "Product";          
            boundColumn.AllowFiltering = true;
            boundColumn.SortExpression = columnName;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);      
 
            columnName = this._ProductTable.CountryColumn.ColumnName;
            boundColumn = new GridBoundColumn();        
            boundColumn.FilterTemplate = new DropdownTemplate(columnName, _RadGrid1, this._ProductTable.SelectDistinct(columnName));
            boundColumn.DataField = columnName;           
            boundColumn.HeaderText = "Country";
            boundColumn.UniqueName= "Country";          
            boundColumn.AllowFiltering = true;
            boundColumn.SortExpression = columnName;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);
 
            columnName = this._ProductTable.StateColumn.ColumnName;
            boundColumn = new GridBoundColumn();       
            boundColumn.FilterTemplate = new DropdownTemplate(columnName, _RadGrid1, this._ProductTable.SelectDistinct(columnName));
            boundColumn.DataField = columnName;
            boundColumn.HeaderText = "State/Province";
            boundColumn.UniqueName = "StateProvince";         
            boundColumn.AllowFiltering = true;
            boundColumn.SortExpression = columnName;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);
 
            columnName = this._ProductTable.SourceSystemTypeDescriptionColumn.ColumnName;
            boundColumn = new GridBoundColumn();          
            boundColumn.FilterTemplate = new DropdownTemplate(columnName, _RadGrid1, this._ProductTable.SelectDistinct(columnName));
            boundColumn.DataField = columnName;
            boundColumn.HeaderText = "OE System";
            boundColumn.UniqueName = "OESystem";
            boundColumn.SortExpression = columnName;
            boundColumn.AllowFiltering = true;
            this._RadGrid1.MasterTableView.Columns.Add(boundColumn);
 
            templateColumn = new GridTemplateColumn();
            _BanColumnName = this._ProductTable.BillingAccountNumberColumn.ColumnName;         
            templateColumn.DataField = _BanColumnName;
            templateColumn.ItemTemplate = new TextBoxTemplate(_BanColumnName);
            templateColumn.HeaderText = "BAN";
            templateColumn.UniqueName = "BAN";           
            templateColumn.AllowFiltering = false;
            this._RadGrid1.MasterTableView.Columns.Add(templateColumn);
 
            if (IsSupplementOrChangeQuote)
            {
                _ServiceColumnName = this._ProductTable.AssetServiceIdColumn.ColumnName;
                templateColumn = new GridTemplateColumn();             
                templateColumn.ItemTemplate = new TextBoxTemplate(_ServiceColumnName);
                templateColumn.DataField = _ServiceColumnName;
                templateColumn.HeaderText = "Asset/Service ID";
                templateColumn.UniqueName = "AssetServiceID";
                templateColumn.AllowFiltering = false;
                this._RadGrid1.MasterTableView.Columns.Add(templateColumn);
            }
 
            #endregion
            #endregion
 
            this._UpdatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
            this._UpdatePanel.ContentTemplateContainer.Controls.Add(this._RadGrid1);
             
            this._TbBAN.ID = "TbBAN";
            this._TbBAN.ShowTitle = true;
            this._TbBAN.MaxLength = 30;
            this._TbBAN.WikiKeyword = "Assignment";
            this._TbBAN.Title = "BAN :";
            this._UpdatePanel.ContentTemplateContainer.Controls.Add(this._TbBAN);
             
            this._btnCopyToSelect.ID = "BtCopyToSelected";
            this._btnCopyToSelect.Text = "Copy To Selected";
            this._btnCopyToSelect.ToolTip = "This will save the BAN above to all selected items.";
            this._btnCopyToSelect.CssClass = "GxButtonBlue";
            this._btnCopyToSelect.Click += new EventHandler(BtnCopyToSelected_Click);
            this._UpdatePanel.ContentTemplateContainer.Controls.Add(this._btnCopyToSelect);
           
            this._btnSaveSelected.ID = "BtSaveToSelected";
            this._btnSaveSelected.Text = "Save Selected";
            this._btnSaveSelected.CssClass = "GxButtonBlue";
            this._btnSaveSelected.Click += new EventHandler(BtSaveToSelected_Click);
            this._UpdatePanel.ContentTemplateContainer.Controls.Add(this._btnSaveSelected);
 
            this.Controls.Add(this._UpdatePanel);
            this._btnCopyToSelect.OnClientClick = "OnClientClick('" + _RadGrid1.ClientID + "')";
            this._btnSaveSelected.OnClientClick = "OnClientClick('" + _RadGrid1.ClientID + "')";          
        }
       
 
        private void BtnCopyToSelected_Click(object sender, EventArgs e)
        {
             
        }
 
        void BtSaveToSelected_Click(object sender, EventArgs e)
        {
           
        }     
 
        protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                 
            }
 
        }      
 
        protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                GridDataItem dataItem = (GridDataItem)e.Item;
                RadTextBox txtBan = (RadTextBox)dataItem.FindControl(_BanColumnName);// pass the TextBox ID
                txtBan.Attributes.Add("onfocus", "SelectRow('" + dataItem.ItemIndex + "','" + _RadGrid1.ClientID + "')");              
            }
        }
 
 
        #endregion
        void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            try
            {
                this._ProductTable = new _ProductTable().ExecuteTypedDataTable();
            }
            catch (Exception) { }
            this._RadGrid1.DataSource = this._ProductTable;
        }
 
        protected override void OnPreRender(EventArgs e)
        {          
 
            base.OnPreRender(e);
            RadAjaxManager ajaxManager = RadAjaxManager.GetCurrent(Page);          
            if (ajaxManager != null)
                ajaxManager.AjaxSettings.AddAjaxSetting(this._UpdatePanel, this._RadGrid1, this._RadLoadingPanel);
        }    
    }
}



2 Answers, 1 is accepted

Sort by
0
RB
Top achievements
Rank 1
answered on 21 Jul 2014, 10:00 PM
This grid is not visible initially on page load..It gets visible gradually based on certain conditions. Could this cause a problem?
0
Kostadin
Telerik team
answered on 24 Jul 2014, 12:57 PM
Hello Ruchi,

I examine the provided code and I was unable to see what might causing this issue. Could you please provide a small runnable sample in order to investigate it further? Also you could try disable the ajax and check whether the issue remains.

Regards,
Kostadin
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
Tags
Grid
Asked by
RB
Top achievements
Rank 1
Answers by
RB
Top achievements
Rank 1
Kostadin
Telerik team
Share this question
or