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

Issue with Column Reorder

6 Answers 156 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Venkat
Top achievements
Rank 1
Venkat asked on 17 Mar 2012, 02:59 AM
Hi,

I have a grid with  set of GridBoundColumn, GridNumericColumn, GridDateTimeColumn etc.,  and Column reorder option enabled. i made reordering through client side by using property called ReorderColumnsOnClient="true". While reordering any column, the issue i faced is after reordered a GridNumeric column where GridBoundColumn is actually placed and vice versa., then filtering a reodered column, it throws a Type cast error.
"Message: Sys.WebForms.PageRequestManagerServerErrorException: Unable to cast object of type 'System.Web.UI.WebControls.TextBox' to type 'Telerik.Web.UI.RadNumericTextBox'. "

if i try to reorder a DatePickerColumn with numeric column it throws an exception as like follows :
"Message: Sys.WebForms.PageRequestManagerServerErrorException: Unable to cast object of type 'Telerik.Web.UI.RadDatePicker' to type 'Telerik.Web.UI.RadNumericTextBox'"


Kindly suggest a solution for this problem.

thanks and regards
Venk@t




6 Answers, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 17 Mar 2012, 06:27 AM
Hello Venkat,


can you please provide C# code?

Thanks,
Jayesh Goyani
0
Venkat
Top achievements
Rank 1
answered on 17 Mar 2012, 06:59 PM
Hello Jayesh Goyani,

Thanks for your reply. my sample code were followed by:
ASPX Code:
<form id="form1" runat="server">
<div>
<telerik:RadDatePicker ID="datePicker" runat="server" DateInput-ReadOnly="true"></telerik:RadDatePicker>
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_OnNeedDataSource"
 AutoGenerateColumns="false" AllowFilteringByColumn="true" OnItemCommand="RadGrid1_OnItemCommand"
 OnItemCreated="RadGrid_OnItemCreated">
<MasterTableView>
<Columns>
<telerik:GridBoundColumn UniqueName="NAME" DataField="NAME" HeaderText="NAME"></telerik:GridBoundColumn>
<telerik:GridBoundColumn UniqueName="LASTNAME" DataField="LASTNAME" HeaderText="LASTNAME"></telerik:GridBoundColumn>
<telerik:GridNumericColumn UniqueName="ID" DataField="ID" HeaderText="ID"></telerik:GridNumericColumn>
<telerik:GridDateTimeColumn UniqueName="DATE" DataField="DATE" HeaderText="DATE"></telerik:GridDateTimeColumn>
</Columns>
</MasterTableView>
<ClientSettings AllowColumnsReorder="true" ReorderColumnsOnClient="false"></ClientSettings>
</telerik:RadGrid>    </div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</form>

c# code 

public partial class _Default : System.Web.UI.Page
{
    List<GridData> GridSourceList = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        GridSourceList = new List<GridData>();
        GridSourceList.Add(new GridData("Abdul", "Abdul", 001, new DateTime(2012, 1, 1)));
        GridSourceList.Add(new GridData("Baskar", "Baskar", 002, new DateTime(2012, 1, 2)));
        GridSourceList.Add(new GridData("Chandran", "Chandran", 003, new DateTime(2012, 1, 3)));
    }
    protected void RadGrid1_OnNeedDataSource(object sender, EventArgs e)
    {
        string strFilterExpression = RadGrid1.MasterTableView.FilterExpression;
        RadGrid1.DataSource = GridSourceList;
    }
    protected void RadGrid1_OnItemCommand(object sender, GridCommandEventArgs e)
    {
 
    }
    protected void RadGrid_OnItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridFilteringItem)
        {
            GridFilteringItem item = (GridFilteringItem)e.Item;
            RadDatePicker txt = (RadDatePicker)item["DATE"].Controls[0];
            txt.DateInput.ReadOnly = true;
        }
    }
}
public class GridData
{
    public GridData(string strFirstName,string strLastname, int intID, DateTime dateTime)
    {
        _firstname = strFirstName;
        _lastname = strLastname;
        _id = intID;
        _date = dateTime;
    }
    private string _firstname;
    private string _lastname;
    private int _id;
    private DateTime _date;
    public DateTime DATE { get { return _date; } set { _date = value; } }
    public string NAME { get{return _firstname;} set{_firstname = value;} }
    public int ID { get { return _id; } set { _id = value; } }
    public string LASTNAME { get { return _lastname; } set { _lastname = value; } }
}


Thanks and Regards,
Venk@t
0
Jayesh Goyani
Top achievements
Rank 2
answered on 17 Mar 2012, 07:25 PM
Hello,

I tried with your code and its work fine from my site.

my telerik version : 2011.2.915.40

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
 
namespace TelerikTest.Web
{
    public partial class aaaa : System.Web.UI.Page
    {
        List<GridData> GridSourceList = null;
 
        protected void Page_Load(object sender, EventArgs e)
        {
            GridSourceList = new List<GridData>();
            GridSourceList.Add(new GridData("Abdul", "Abdul", 001, new DateTime(2012, 1, 1)));
            GridSourceList.Add(new GridData("Baskar", "Baskar", 002, new DateTime(2012, 1, 2)));
            GridSourceList.Add(new GridData("Chandran", "Chandran", 003, new DateTime(2012, 1, 3)));
        }
        protected void RadGrid1_OnNeedDataSource(object sender, EventArgs e)
        {
            string strFilterExpression = RadGrid1.MasterTableView.FilterExpression;
            RadGrid1.DataSource = GridSourceList;
        }
        protected void RadGrid1_OnItemCommand(object sender, GridCommandEventArgs e)
        {
 
        }
        protected void RadGrid_OnItemCreated(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridFilteringItem)
            {
                GridFilteringItem item = (GridFilteringItem)e.Item;
                RadDatePicker txt = (RadDatePicker)item["DATE"].Controls[0];
                txt.DateInput.ReadOnly = true;
            }
        }
 
        //protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        //{
        //    dynamic data = new[] {
        //      new { ID = 1, Name ="name1"},
        //      new { ID = 2, Name = "name2"},
        //      new { ID = 3, Name = "name3"},
        //      new { ID = 4, Name = "Name4"},
        //       new { ID = 1, Name ="name5"}};
        //    RadGrid1.DataSource = data;
        //}
 
 
 
    }
 
 
    public class GridData
    {
        public GridData(string strFirstName, string strLastname, int intID, DateTime dateTime)
        {
            _firstname = strFirstName;
            _lastname = strLastname;
            _id = intID;
            _date = dateTime;
        }
        private string _firstname;
        private string _lastname;
        private int _id;
        private DateTime _date;
        public DateTime DATE { get { return _date; } set { _date = value; } }
        public string NAME { get { return _firstname; } set { _firstname = value; } }
        public int ID { get { return _id; } set { _id = value; } }
        public string LASTNAME { get { return _lastname; } set { _lastname = value; } }
    }
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="aaaa.aspx.cs" Inherits="TelerikTest.Web.aaaa" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
        <telerik:RadDatePicker ID="datePicker" runat="server" DateInput-ReadOnly="true">
        </telerik:RadDatePicker>
        <telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_OnNeedDataSource"
            AutoGenerateColumns="false" AllowFilteringByColumn="true" OnItemCommand="RadGrid1_OnItemCommand"
            OnItemCreated="RadGrid_OnItemCreated">
            <MasterTableView>
                <Columns>
                    <telerik:GridBoundColumn UniqueName="NAME" DataField="NAME" HeaderText="NAME">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn UniqueName="LASTNAME" DataField="LASTNAME" HeaderText="LASTNAME">
                    </telerik:GridBoundColumn>
                    <telerik:GridNumericColumn UniqueName="ID" DataField="ID" HeaderText="ID">
                    </telerik:GridNumericColumn>
                    <telerik:GridDateTimeColumn UniqueName="DATE" DataField="DATE" HeaderText="DATE">
                    </telerik:GridDateTimeColumn>
                </Columns>
            </MasterTableView>
            <ClientSettings AllowColumnsReorder="true" ReorderColumnsOnClient="false">
            </ClientSettings>
        </telerik:RadGrid>
    </div>
    </form>
</body>
</html>


Thanks,
Jayesh Goyani
0
Venkat
Top achievements
Rank 1
answered on 18 Mar 2012, 06:47 AM
Hello  Jayesh Goyani,

Thanks for your reply, but my scenario is that i want to reorder the column  through client side alone. Is that possible to do by getting without typecast error that i mentioned above  ? 

thanks and regards
Venk@t
0
Jayesh Goyani
Top achievements
Rank 2
answered on 18 Mar 2012, 02:35 PM
Hello Venkat,

Can you please provide your project using support ticket?
So we can able to find the issue in your code.

Thanks,
Jayesh Goyani
0
Venkat
Top achievements
Rank 1
answered on 19 Mar 2012, 07:55 AM
Hello Jayesh goyani,

I am unable to provide my code since it is confidential data. anyway thanks for your reply. i have a another doubt with reordering column. As you suggest i try to reorder my column by making ReorderColumnsOnClient = "false"; during this process grid on-prerender event
 is not fired after itemdatabound event while reordering. am i missunderstood Radgrid event life-cycle ?

thanks and regards,
Venk@t   

 
Tags
Grid
Asked by
Venkat
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Venkat
Top achievements
Rank 1
Share this question
or