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

DateTimePicker For DateTime DataType Column Filter

2 Answers 185 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Dharmesh
Top achievements
Rank 1
Dharmesh asked on 05 Apr 2011, 12:22 PM
Hello Everyone,

I am new to Rad Grid and want to put DateTimePicker in a Column which has data type Datetime.

However when I specify AutoGenerateColumns="True" at that time DateTimePicker is generated in Column Filter.
But when I doing AutoGenerateColumns="False" and Generate Columns in Page_Load Event at that time all code is same
but instead of DateTimePicker TextBox is generated.

So anyone can help me how to enable DateTimePicker for Filter Column when I generate columns in code behind ?

However I have also specify DataType property when I am adding columns to Grid.

Here is code that I am using.I have declared grid in ASPX Page and just want to describe structure from code behind.

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            AddColumns();
            ViewState["DataSet"] = GetData();
        }
    }
    private void AddColumns()
    {
        GridBoundColumn colCustomerID = new GridBoundColumn();
        GridBoundColumn colBirthDate = new GridBoundColumn();
        GridBoundColumn colName = new GridBoundColumn();
        GridBoundColumn colAddress = new GridBoundColumn();
        GridBoundColumn colPhone = new GridBoundColumn();
        GridBoundColumn colSalary = new GridBoundColumn();
        GridBoundColumn colBoolTest = new GridBoundColumn();
 
        rgDemo.Columns.Add(colCustomerID);
        rgDemo.Columns.Add(colBirthDate);
        rgDemo.Columns.Add(colName);
        rgDemo.Columns.Add(colAddress);
        rgDemo.Columns.Add(colPhone);
        rgDemo.Columns.Add(colSalary);
        rgDemo.Columns.Add(colBoolTest);
 
 
        colCustomerID.DataField = "EmployeeID";
        colCustomerID.HeaderText = "EmployeeID";
        colCustomerID.UniqueName = "EmployeeID";
 
 
        colBirthDate.DataField = "BirthDate";
        colBirthDate.HeaderText = "BirthDate";
        colBirthDate.DataType = Type.GetType("System.DateTime");
        colBirthDate.AllowFiltering = true;
        colBirthDate.UniqueName = "BirthDate";
        colBirthDate.DataFormatString = "{0:MM/dd/yyyy}";
         
 
        colName.DataField = "Name";
        colName.HeaderText = "Name";
        colName.UniqueName = "Name";
 
        colAddress.DataField = "Address";
        colAddress.HeaderText = "Address";
        colAddress.UniqueName = "Address";
 
        colPhone.DataField = "Phone";
        colPhone.HeaderText = "Phone";
        colPhone.UniqueName = "Phone";
 
        colSalary.DataField = "Salary";
        colSalary.HeaderText = "Salary";
        colSalary.UniqueName = "Salary";
 
        colBoolTest.DataField = "BoolTest";
        colBoolTest.HeaderText = "BoolTest";
        colBoolTest.DataType = typeof(Boolean);
 
    }
 
    private DataSet GetData()
    {
        DataSet _dsData = new DataSet();
 
        DataTable _dtData = new DataTable("Employee");
 
        DataColumn _dc1 = new DataColumn("EmployeeID", typeof(string));
        DataColumn _dc2 = new DataColumn("BirthDate", typeof(DateTime));
        DataColumn _dc3 = new DataColumn("Name", typeof(string));
        DataColumn _dc4 = new DataColumn("Address", typeof(string));
        DataColumn _dc5 = new DataColumn("Phone", typeof(string));
        DataColumn _dc6 = new DataColumn("Salary", typeof(int));
        DataColumn _dc7 = new DataColumn("BoolTest", typeof(int));
 
        _dtData.Columns.Add(_dc1);
        _dtData.Columns.Add(_dc3);
        _dtData.Columns.Add(_dc2);
        _dtData.Columns.Add(_dc4);
        _dtData.Columns.Add(_dc5);
        _dtData.Columns.Add(_dc6);
        _dtData.Columns.Add(_dc7);
 
 
        for (int i = 0; i < 20; i++)
        {
            string index = Convert.ToString(i + 1);
 
            DataRow dr = _dtData.NewRow();
 
            dr["EmployeeID"] = "E000" + index;
            dr["Name"] = "Employee " + index;
            dr["Address"] = "Address " + index;
            dr["Phone"] = "123-56789";
            dr["Salary"] = Convert.ToString((i + 1) * 1000);
            dr["BirthDate"] = DateTime.Now.AddDays(i + 1);
            dr["BoolTest"] = (i % 2) == 0 ? true : false;
            _dtData.Rows.Add(dr);
        }
 
        _dsData.Tables.Add(_dtData);
        return _dsData;
    }
 
    protected void rgDemo_OnNeedDataSource(object source, GridNeedDataSourceEventArgs e)
    {
        //Write code to get data in DataSet ds
        DataSet _ds = (DataSet)ViewState["DataSet"];
        rgDemo.VirtualItemCount = _ds.Tables[0].Rows.Count;
        rgDemo.DataSource = _ds;
    }

2 Answers, 1 is accepted

Sort by
0
Accepted
Princy
Top achievements
Rank 2
answered on 05 Apr 2011, 12:49 PM
Hello Dharmesh,

Instead of GridBoundColumn, use 'GridDateTimeColumn' for the field "BirthDate' like below.

C#:
.   .    .   .  .  .   .
GridDateTimeColumn colBirthDate = new GridDateTimeColumn ();
rgDemo.Columns.Add(colBirthDate);
colBirthDate.DataField = "BirthDate";
colBirthDate.HeaderText = "BirthDate";
colBirthDate.AllowFiltering = true;
colBirthDate.UniqueName = "BirthDate";
 .   .    .   .  .  .   .

Thanks,
Princy.
0
Dharmesh
Top achievements
Rank 1
answered on 05 Apr 2011, 02:01 PM
Hello Princy,

Thanks a lot.

It works for me!!!!!!!

Regards,

Dharmesh Solanki
Tags
Grid
Asked by
Dharmesh
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Dharmesh
Top achievements
Rank 1
Share this question
or