Grid with datecolumn

  1. #1

    Grid with datecolumn

    Hi, I have grid with datail form.
    On grid I have datecolumn, after I select some rows datecolumn look as changed even if I don't change date.
    I try various settings like usenull, but nothing helps me.

    How to set it correctly?

    Markup:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridWithDate.aspx.cs" Inherits="Intranet_v4_Web.Tests.GridWithDate"
    %><!DOCTYPE html>
    <html>
    <head runat="server">
        <title>Grid with date</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <ext:ResourcePlaceHolder runat="server" Mode="ScriptFiles" />
        <ext:ResourcePlaceHolder runat="server" Mode="Style" />  
        <script type="text/javascript">
            function GridSelectionChanged(form, record) {
                // update changes on current record
                if (form.record != null && form.getForm().isDirty()) form.getForm().updateRecord(form.record);
    
                form.getForm().loadRecord(record);
                form.record = record;
            }
        </script>  
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" locale="cs-CZ" />
        <ext:Panel 
            ID="Panel1" 
            runat="server" 
            Title="Grid with dates"
            Width="600"
            Frame="true"
            Layout="Form" >
            <Items>
                    <ext:gridpanel runat="server" title="TestGrid1" icon="Group" id="TestGrid1" autoheight="true" 
                                    TrackMouseOver="true" >
                        <SelectionModel>
                            <ext:RowSelectionModel runat="server">
                                <Listeners>
                                    <RowSelect Handler="GridSelectionChanged(#{detail}, record);" />
                                </Listeners>
                            </ext:RowSelectionModel>
                        </SelectionModel>    
                        <columnmodel>
                            <columns>
                                <ext:rownumberercolumn />
                                <ext:column dataindex="UserName" header="Jméno"  />
                                <ext:datecolumn dataindex="SelectedDate" header="Datum" />
                            </columns>
                        </columnmodel>
                        <store>
                            <ext:groupstore runat="server">
                                <reader>
                                    <ext:jsonreader>
                                        <fields>
                                            <ext:recordfield name="UserName" />
                                            <ext:recordfield name="SelectedDate" type="Date" AllowBlank="true" usenull="false" />
                                        </fields>
                                    </ext:jsonreader>
                                </reader>
                            </ext:groupstore>
                        </store>                    
                    </ext:gridpanel>
    
                    <ext:FormPanel id="detail" runat="server" layout="FormLayout" Icon="User" title="Detail">
                        <items>
                            <ext:textfield id="UserName" dataindex="UserName" 
                                fieldlabel="UserName" runat="server" />
                            <ext:datefield id="SelectedDate" dataindex="SelectedDate" 
                                fieldlabel="SelectedDate" runat="server" allowblank="true" />
                        </items>                    
                    </ext:FormPanel>
            </Items>
        </ext:Panel>     
        </form>  
    </body>
    </html>
    CodeBehind:
    namespace Intranet_v4_Web.Tests
    {
        public partial class GridWithDate : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (Ext.Net.X.IsAjaxRequest) return;
    
                var data = new List<VM> { 
                    new VM { UserName = "User1", SelectedDate = DateTime.Now } ,
                    new VM { UserName = "User2", SelectedDate = null } ,
                    new VM { UserName = "User3", SelectedDate = null } ,
                    new VM { UserName = "User4", SelectedDate = DateTime.Now } ,
                    new VM { UserName = "User5", SelectedDate = null } 
                };
    
                TestGrid1.Store.Primary.DataSource = data;
                TestGrid1.Store.Primary.DataBind();
            }
        }
    
        public class VM {
            public string UserName { get; set; }
            public DateTime? SelectedDate { get; set; }
        }
    }
  2. #2
    Please set TrackResetOnLoad=true for FormPanel
  3. #3

    Thank you

    Thank you Vladimir, it helps.

    Can you explain it a little, or point me to some resources. I don't know why this happen only with datefields?
  4. #4
    After 'loadRecord' calling all fields in the form panel are dirty therefore you call 'updateRecord'
    TrackResetOnLoad reset original value after record loading therefore 'isDirty' gives false
  5. #5
    But why only datecolumn is marked as changed?
  6. #6
    I did not test your sample but I guess it occurs for rows have 'null' initial date, DateField returns empty string instead null
    null and empty string are different values therefore you have dirty flag
  7. #7
    Thank you Vladimir,
    what is recommended solution to handle null and empty string?
    Is it possible to set datefield to use null instead of empty strings?

    Thank you

Similar Threads

  1. Replies: 1
    Last Post: Apr 13, 2012, 1:43 PM
  2. [CLOSED] How to set formatDate of dateColumn
    By tactime10 in forum 1.x Legacy Premium Help
    Replies: 16
    Last Post: Feb 28, 2012, 11:57 AM
  3. [CLOSED] DateColumn problem
    By thchuong in forum 1.x Legacy Premium Help
    Replies: 5
    Last Post: Jan 13, 2011, 1:50 AM
  4. [CLOSED] DateColumn, Format
    By jeybonnet in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Dec 03, 2010, 1:57 PM
  5. datecolumn bug on crome browser
    By maxdiable in forum 1.x Help
    Replies: 2
    Last Post: Sep 08, 2010, 11:40 AM

Tags for this Thread

Posting Permissions