Infragistics Home

Infragistics Forums

Infragistics community online discussions.
Welcome to Infragistics Forums Sign in | FAQ
in Search

UltraDatePicker and DataFilter

Last post 09-17-2008 13:59 by BarraCoder. 5 replies.
Page 1 of 1 (6 items)
Sort Posts: Previous Next
  • 09-17-2008 7:44

    UltraDatePicker and DataFilter

    I am having a difficult time creating a DataFilter that will convert the dates in our database to a datetime and back.  I have used the datafilter for percentages without issue so I understand basically how to use the datafilter.  I can get the data from the db to a datetime but it will not go back to a string.  Can you provide infomation on how to do this. 

    In db the field is a string formatted as YYYYMMDD

    Here is the code I have:

    public virtual object Convert(EditorDataFilterConvertArgs convertArgs)

    {

    try

    {

    switch (convertArgs.Direction)

    {

    case ConversionDirection.OwnerToEditor:

    convertArgs.Handled = true;

    string s = convertArgs.Value.ToString();

    if (convertArgs.Value.GetType() == Type.GetType("System.String"))

    return new DateTime(System.Convert.ToInt32(s.Substring(0, 4)), System.Convert.ToInt32(s.Substring(4, 2)), System.Convert.ToInt32(s.Substring(6, 2)));

    else

    return convertArgs.Value;

    case ConversionDirection.EditorToOwner:

    convertArgs.Handled = true;return "19650319";  //No matter what date is chosen I want this date back.  FOR TESTING ONLY

    }

    throw new Exception("Invalid value passed into CheckEditorDataFilter.Convert()");

    }

    catch

    {

    MessageBox.Show("Hello");return null;

    }

     

    Thanks so much,

    Daryl Lee

    RFMS, inc.

    • Post Points: 50
  • 09-17-2008 8:44 In reply to

    Re: UltraDatePicker and DataFilter

    It would be easer to do

    DateTime dateValue = DateTime.ParseExact("20080201", "yyyyMMdd", null);

    • Post Points: 5
  • 09-17-2008 8:46 In reply to

    Re: UltraDatePicker and DataFilter

    And then

    string date = string.Format("{0:yyyyMMdd}", dateValue);

    to bring it back

    • Post Points: 5
  • 09-17-2008 13:17 In reply to

    Re: UltraDatePicker and DataFilter

    New information:

    The Convert method gets called a lot for a single date display.  Before the form displays convert gets called with a direction of OwnerToEditor and a DestType of DateTime and args.Value.GetType refers to a string.  I convert from YYYYMMDD to a datetime and the control displays the data.

    Change the data with the dropdown calendar.  Now convert gets called with a direction of EditorToOwner, DestType = DateTime and Value.GetType = DateTime.  Should I not get a call with DestType = String?  I cannot get the DateTime back to a string in the form of YYYYMMDD.  My string ends up with a string representation of a DateTime MM/DD/YYYY HH:MM:SS.

    What might I be missing? And BTW, why does the Convert get called so many times and why does the DestType change even when the direction does not change.  I feel like if I understood this I could make a go of it.

    Thanks,

    Daryl

    • Post Points: 20
  • 09-17-2008 13:58 In reply to

    Re: UltraDatePicker and DataFilter

    The DataFilter below is what you are looking for. And Convert gets called for every item in the datasource when the grid is databound. And remember that any edited value has to go from DatePicker to underlying display control to data source too.

     

    public class DateEditorDataFilter : Infragistics.Win.IEditorDataFilter

    {

    #region IEditorDataFilter Memberspublic object Convert(Infragistics.Win.EditorDataFilterConvertArgs conversionArgs)

    {

    switch (conversionArgs.Direction)

    {

    case Infragistics.Win.ConversionDirection.EditorToOwner:

    case Infragistics.Win.ConversionDirection.EditorToDisplay:

    conversionArgs.Handled = true;

    DateTime date = (DateTime)conversionArgs.Value;

    return string.Format("{0:yyyyMMdd}", date);

    case Infragistics.Win.ConversionDirection.OwnerToEditor:

    conversionArgs.Handled = true;

    string dateAsString = (string)conversionArgs.Value;

    return DateTime.ParseExact(dateAsString, "yyyyMMdd", null);

    case Infragistics.Win.ConversionDirection.DisplayToEditor:

    conversionArgs.Handled = true;

    string dateAsStringD2E = (string)conversionArgs.Value;return System.Convert.ToDateTime(dateAsStringD2E);

    }

    throw new ApplicationException("Invalid value passed.");

    }

    #endregion

    }

    • Post Points: 5
  • 09-17-2008 13:59 In reply to

    Re: UltraDatePicker and DataFilter

    And just so you have a full example, I've included a complete test form below:

     

    public class DateConversion : Form

    {

    private Infragistics.Win.UltraWinGrid.UltraGrid _grid;

    private Infragistics.Win.UltraWinEditors.UltraDateTimeEditor ultraDateTimeEditor1;

    private UltraGrid _comparisonGrid;private DataTable _data;

     

    public DateConversion()

    {

    InitializeComponent();

    const string COLUMN_NAME = "DateAsString";

    _data = new DataTable();

    _data.Columns.Add(COLUMN_NAME, typeof(string));

    Random rnd = new Random(Environment.TickCount);

    for (int i = 0; i < 10; i++)

    {

    DateTime date = new DateTime(2008, 1, 1).AddDays(rnd.Next(365));_data.Rows.Add(string.Format("{0:yyyyMMdd}", date));

    }

    _grid.DataSource = _data;

    _comparisonGrid.DataSource = _data;

    _grid.DisplayLayout.Bands[0].Columns[COLUMN_NAME].Style = Infragistics.Win.UltraWinGrid.
    ColumnStyle.DateTime;_grid.DisplayLayout.Bands[0].Columns[COLUMN_NAME].Editor.DataFilter = new DateEditorDataFilter();

    }

    private void InitializeComponent()

    {

    Infragistics.Win.Appearance appearance1 = new Infragistics.Win.Appearance();

    Infragistics.Win.UltraWinGrid.UltraGridBand ultraGridBand1 = new Infragistics.Win.UltraWinGrid.UltraGridBand("Band 0", -1);

    Infragistics.Win.UltraWinGrid.UltraGridColumn ultraGridColumn1 = new Infragistics.Win.UltraWinGrid.UltraGridColumn("DateAsString");

    Infragistics.Win.Appearance appearance2 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance3 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance4 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance5 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance6 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance7 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance8 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance9 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance10 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance11 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance12 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance13 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance14 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance15 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance16 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance17 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance18 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance19 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance20 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance21 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance22 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance23 = new Infragistics.Win.Appearance();

    Infragistics.Win.Appearance appearance24 = new Infragistics.Win.Appearance();

    this._grid = new Infragistics.Win.UltraWinGrid.UltraGrid();

    this.ultraDateTimeEditor1 = new Infragistics.Win.UltraWinEditors.UltraDateTimeEditor();

    this._comparisonGrid = new Infragistics.Win.UltraWinGrid.UltraGrid();

    ((System.ComponentModel.ISupportInitialize)(this._grid)).BeginInit();

    ((System.ComponentModel.ISupportInitialize)(this.ultraDateTimeEditor1)).BeginInit();

    ((System.ComponentModel.ISupportInitialize)(this._comparisonGrid)).BeginInit();

    this.SuspendLayout();

    //

    // _grid

    //

    appearance1.BackColor = System.Drawing.SystemColors.Window;

    appearance1.BorderColor = System.Drawing.SystemColors.InactiveCaption;

    this._grid.DisplayLayout.Appearance = appearance1;

    ultraGridColumn1.Header.VisiblePosition = 0;

    ultraGridColumn1.Width = 160;

    ultraGridBand1.Columns.AddRange(
    new object[ {

    ultraGridColumn1});

    this._grid.DisplayLayout.BandsSerializer.Add(ultraGridBand1);

    this._grid.DisplayLayout.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;

    this._grid.DisplayLayout.CaptionVisible = Infragistics.Win.DefaultableBoolean.False;

    appearance2.BackColor = System.Drawing.SystemColors.ActiveBorder;

    appearance2.BackColor2 = System.Drawing.SystemColors.ControlDark;

    appearance2.BackGradientStyle = Infragistics.Win.GradientStyle.Vertical;

    appearance2.BorderColor = System.Drawing.SystemColors.Window;

    this._grid.DisplayLayout.GroupByBox.Appearance = appearance2;

    appearance3.ForeColor = System.Drawing.SystemColors.GrayText;

    this._grid.DisplayLayout.GroupByBox.BandLabelAppearance = appearance3;

    this._grid.DisplayLayout.GroupByBox.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;

    appearance4.BackColor = System.Drawing.SystemColors.ControlLightLight;

    appearance4.BackColor2 = System.Drawing.SystemColors.Control;

    appearance4.BackGradientStyle = Infragistics.Win.GradientStyle.Horizontal;

    appearance4.ForeColor = System.Drawing.SystemColors.GrayText;

    this._grid.DisplayLayout.GroupByBox.PromptAppearance = appearance4;

    this._grid.DisplayLayout.MaxColScrollRegions = 1;

    this._grid.DisplayLayout.MaxRowScrollRegions = 1;

    appearance5.BackColor = System.Drawing.SystemColors.Window;

    appearance5.ForeColor = System.Drawing.SystemColors.ControlText;

    this._grid.DisplayLayout.Override.ActiveCellAppearance = appearance5;

    appearance6.BackColor = System.Drawing.SystemColors.Highlight;

    appearance6.ForeColor = System.Drawing.SystemColors.HighlightText;

    this._grid.DisplayLayout.Override.ActiveRowAppearance = appearance6;

    this._grid.DisplayLayout.Override.BorderStyleCell = Infragistics.Win.UIElementBorderStyle.Dotted;

    this._grid.DisplayLayout.Override.BorderStyleRow = Infragistics.Win.UIElementBorderStyle.Dotted;

    appearance7.BackColor = System.Drawing.SystemColors.Window;

    this._grid.DisplayLayout.Override.CardAreaAppearance = appearance7;

    appearance8.BorderColor = System.Drawing.Color.Silver;

    appearance8.TextTrimming = Infragistics.Win.TextTrimming.EllipsisCharacter;

    this._grid.DisplayLayout.Override.CellAppearance = appearance8;

    this._grid.DisplayLayout.Override.CellClickAction = Infragistics.Win.UltraWinGrid.CellClickAction.EditAndSelectText;

    this._grid.DisplayLayout.Override.CellPadding = 0;

    appearance9.BackColor = System.Drawing.SystemColors.Control;

    appearance9.BackColor2 = System.Drawing.SystemColors.ControlDark;

    appearance9.BackGradientAlignment = Infragistics.Win.GradientAlignment.Element;

    appearance9.BackGradientStyle = Infragistics.Win.GradientStyle.Horizontal;

    appearance9.BorderColor = System.Drawing.SystemColors.Window;

    this._grid.DisplayLayout.Override.GroupByRowAppearance = appearance9;

    appearance10.TextHAlignAsString = "Left";

    this._grid.DisplayLayout.Override.HeaderAppearance = appearance10;

    this._grid.DisplayLayout.Override.HeaderClickAction = Infragistics.Win.UltraWinGrid.HeaderClickAction.SortMulti;

    this._grid.DisplayLayout.Override.HeaderStyle = Infragistics.Win.HeaderStyle.WindowsXPCommand;

    appearance11.BackColor = System.Drawing.SystemColors.Window;

    appearance11.BorderColor = System.Drawing.Color.Silver;

    this._grid.DisplayLayout.Override.RowAppearance = appearance11;

    this._grid.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False;

    appearance12.BackColor = System.Drawing.SystemColors.ControlLight;

    this._grid.DisplayLayout.Override.TemplateAddRowAppearance = appearance12;

    this._grid.DisplayLayout.ScrollBounds = Infragistics.Win.UltraWinGrid.ScrollBounds.ScrollToFill;

    this._grid.DisplayLayout.ScrollStyle = Infragistics.Win.UltraWinGrid.ScrollStyle.Immediate;

    this._grid.DisplayLayout.ViewStyleBand = Infragistics.Win.UltraWinGrid.ViewStyleBand.OutlookGroupBy;

    this._grid.Location = new System.Drawing.Point(0, 0);

    this._grid.Name = "_grid";

    this._grid.Size = new System.Drawing.Size(190, 216);

    this._grid.TabIndex = 0;

    this._grid.Text = "ultraGrid1";

    //

    // ultraDateTimeEditor1

    //

    this.ultraDateTimeEditor1.Location = new System.Drawing.Point(12, 246);

    this.ultraDateTimeEditor1.Name = "ultraDateTimeEditor1";

    this.ultraDateTimeEditor1.Size = new System.Drawing.Size(144, 21);

    this.ultraDateTimeEditor1.TabIndex = 1;

    //

    // _comparisonGrid

    //

    appearance13.BackColor = System.Drawing.SystemColors.Window;

    appearance13.BorderColor = System.Drawing.SystemColors.InactiveCaption;

    this._comparisonGrid.DisplayLayout.Appearance = appearance13;

    this._comparisonGrid.DisplayLayout.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;

    this._comparisonGrid.DisplayLayout.CaptionVisible = Infragistics.Win.DefaultableBoolean.False;

    appearance14.BackColor = System.Drawing.SystemColors.ActiveBorder;

    appearance14.BackColor2 = System.Drawing.SystemColors.ControlDark;

    appearance14.BackGradientStyle = Infragistics.Win.GradientStyle.Vertical;

    appearance14.BorderColor = System.Drawing.SystemColors.Window;

    this._comparisonGrid.DisplayLayout.GroupByBox.Appearance = appearance14;

    appearance15.ForeColor = System.Drawing.SystemColors.GrayText;

    this._comparisonGrid.DisplayLayout.GroupByBox.BandLabelAppearance = appearance15;

    this._comparisonGrid.DisplayLayout.GroupByBox.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;

    appearance16.BackColor = System.Drawing.SystemColors.ControlLightLight;

    appearance16.BackColor2 = System.Drawing.SystemColors.Control;

    appearance16.BackGradientStyle = Infragistics.Win.GradientStyle.Horizontal;

    appearance16.ForeColor = System.Drawing.SystemColors.GrayText;

    this._comparisonGrid.DisplayLayout.GroupByBox.PromptAppearance = appearance16;

    this._comparisonGrid.DisplayLayout.MaxColScrollRegions = 1;

    this._comparisonGrid.DisplayLayout.MaxRowScrollRegions = 1;

    appearance17.BackColor = System.Drawing.SystemColors.Window;

    appearance17.ForeColor = System.Drawing.SystemColors.ControlText;

    this._comparisonGrid.DisplayLayout.Override.ActiveCellAppearance = appearance17;

    appearance18.BackColor = System.Drawing.SystemColors.Highlight;

    appearance18.ForeColor = System.Drawing.SystemColors.HighlightText;

    this._comparisonGrid.DisplayLayout.Override.ActiveRowAppearance = appearance18;

    this._comparisonGrid.DisplayLayout.Override.BorderStyleCell = Infragistics.Win.UIElementBorderStyle.Dotted;

    this._comparisonGrid.DisplayLayout.Override.BorderStyleRow = Infragistics.Win.UIElementBorderStyle.Dotted;

    appearance19.BackColor = System.Drawing.SystemColors.Window;

    this._comparisonGrid.DisplayLayout.Override.CardAreaAppearance = appearance19;

    appearance20.BorderColor = System.Drawing.Color.Silver;

    appearance20.TextTrimming = Infragistics.Win.TextTrimming.EllipsisCharacter;

    this._comparisonGrid.DisplayLayout.Override.CellAppearance = appearance20;

    this._comparisonGrid.DisplayLayout.Override.CellClickAction = Infragistics.Win.UltraWinGrid.CellClickAction.EditAndSelectText;

    this._comparisonGrid.DisplayLayout.Override.CellPadding = 0;

    appearance21.BackColor = System.Drawing.SystemColors.Control;

    appearance21.BackColor2 = System.Drawing.SystemColors.ControlDark;

    appearance21.BackGradientAlignment = Infragistics.Win.GradientAlignment.Element;

    appearance21.BackGradientStyle = Infragistics.Win.GradientStyle.Horizontal;

    appearance21.BorderColor = System.Drawing.SystemColors.Window;

    this._comparisonGrid.DisplayLayout.Override.GroupByRowAppearance = appearance21;

    appearance22.TextHAlignAsString = "Left";

    this._comparisonGrid.DisplayLayout.Override.HeaderAppearance = appearance22;

    this._comparisonGrid.DisplayLayout.Override.HeaderClickAction = Infragistics.Win.UltraWinGrid.HeaderClickAction.SortMulti;

    this._comparisonGrid.DisplayLayout.Override.HeaderStyle = Infragistics.Win.HeaderStyle.WindowsXPCommand;

    appearance23.BackColor = System.Drawing.SystemColors.Window;

    appearance23.BorderColor = System.Drawing.Color.Silver;

    this._comparisonGrid.DisplayLayout.Override.RowAppearance = appearance23;

    this._comparisonGrid.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False;

    appearance24.BackColor = System.Drawing.SystemColors.ControlLight;

    this._comparisonGrid.DisplayLayout.Override.TemplateAddRowAppearance = appearance24;

    this._comparisonGrid.DisplayLayout.ScrollBounds = Infragistics.Win.UltraWinGrid.ScrollBounds.ScrollToFill;

    this._comparisonGrid.DisplayLayout.ScrollStyle = Infragistics.Win.UltraWinGrid.ScrollStyle.Immediate;

    this._comparisonGrid.DisplayLayout.ViewStyleBand = Infragistics.Win.UltraWinGrid.ViewStyleBand.OutlookGroupBy;

    this._comparisonGrid.Location = new System.Drawing.Point(400, 12);

    this._comparisonGrid.Name = "_comparisonGrid";

    this._comparisonGrid.Size = new System.Drawing.Size(333, 204);

    this._comparisonGrid.TabIndex = 2;

    this._comparisonGrid.Text = "ultraGrid1";

    //

    // DateConversion

    //

    this.ClientSize = new System.Drawing.Size(754, 311);

    this.Controls.Add(this._comparisonGrid);

    this.Controls.Add(this.ultraDateTimeEditor1);

    this.Controls.Add(this._grid);

    this.Name = "DateConversion";

    this.Text = "Date Conversions";

    ((System.ComponentModel.ISupportInitialize)(this._grid)).EndInit();

    ((System.ComponentModel.ISupportInitialize)(this.ultraDateTimeEditor1)).EndInit();

    ((System.ComponentModel.ISupportInitialize)(this._comparisonGrid)).EndInit();

    this.ResumeLayout(false);

    this.PerformLayout();

    }

    public class DateEditorDataFilter : Infragistics.Win.IEditorDataFilter

    {

    #region IEditorDataFilter Memberspublic object Convert(Infragistics.Win.EditorDataFilterConvertArgs conversionArgs)

    {

    switch (conversionArgs.Direction)

    {

    case Infragistics.Win.ConversionDirection.EditorToOwner:

    case Infragistics.Win.ConversionDirection.EditorToDisplay:

    conversionArgs.Handled = true;

    DateTime date = (DateTime)conversionArgs.Value;

    return string.Format("{0:yyyyMMdd}", date);

    case Infragistics.Win.ConversionDirection.OwnerToEditor:

    conversionArgs.Handled = true;

    string dateAsString = (string)conversionArgs.Value;

    return DateTime.ParseExact(dateAsString, "yyyyMMdd", null);

    case Infragistics.Win.ConversionDirection.DisplayToEditor:

    conversionArgs.Handled = true;

    string dateAsStringD2E = (string)conversionArgs.Value;return System.Convert.ToDateTime(dateAsStringD2E);

    }

    throw new ApplicationException("Invalid value passed.");

    }

    #endregion

    }

    }

    • Post Points: 5
Page 1 of 1 (6 items)
Powered by Community Server (Commercial Edition), by Telligent Systems