public override void ApplyValue(Dictionary <string, object> item, object state) { DateTime previousValue = (DateTime)item[_args.Column.Field]; DateTime newValue = (DateTime)state; // If the existing value is null, set the default time if (previousValue == null) { XrmDateBindingOptions options = GetDateBindingOptions(_args.Column); previousValue = new DateTime(1900, 1, 1, options.Hour != null ? options.Hour.Value :0, options.Minute != null? options.Minute.Value : 0); } DateTimeEx.SetTime(newValue, previousValue); item[_args.Column.Field] = newValue; this.RaiseOnChange(item); }
public static XrmDateBindingOptions GetDateBindingOptions(Column columnDef) { object options = columnDef.Options; XrmDateBindingOptions dateOptions = null; if (options != null && options.GetType() == typeof(string)) { dateOptions = new XrmDateBindingOptions(); dateOptions.OverrideUserDateFormat = (string)columnDef.Options; return(dateOptions); } else if (options != null) { dateOptions = (XrmDateBindingOptions)options; } else { dateOptions = new XrmDateBindingOptions(); } return(dateOptions); }
public static void init() { ContactsEditorViewModel vm = new ContactsEditorViewModel(); OrganizationServiceProxy.GetUserSettings(); // Data Bind Grid List <Column> columns = GridDataViewBinder.ParseLayout(",entityState,20,First Name,firstname,200,Last Name,lastname,200,Birth Date,birthdate,200,Account Role Code,accountrolecode,200,Number of Children,numberofchildren,100,Currency,transactioncurrencyid,200,Credit Limit,creditlimit,100,Gender,gendercode,100,Owner,ownerid,100,Parent Customer,parentcustomerid,100"); // Set Column formatters and editors columns[0].Formatter = delegate(int row, int cell, object value, Column columnDef, object dataContext) { EntityStates state = (EntityStates)value; return(((state == EntityStates.Changed) || (state == EntityStates.Created)) ? "<span class='grid-edit-indicator'></span>" : ""); }; // First Name Column XrmTextEditor.BindColumn(columns[1]); // Last Name Column XrmTextEditor.BindColumn(columns[2]); // Birth Date Column XrmDateBindingOptions dateOptions = new XrmDateBindingOptions(); dateOptions.Hour = 9; dateOptions.Minute = 0; XrmDateEditor.BindColumn(columns[3], false).Options = dateOptions; // Account Code Column XrmOptionSetEditor.BindColumn(columns[4], "contact", columns[4].Field, true); // Number of Children Column XrmNumberEditor.BindColumn(columns[5], 0, 100, 0); // Currency Column XrmLookupEditor.BindColumn(columns[6], vm.TransactionCurrencySearchCommand, "transactioncurrencyid", "currencyname", ""); // Credit Limit Column XrmMoneyEditor.BindColumn(columns[7], -10000, 10000); // Another optionset XrmOptionSetEditor.BindColumn(columns[8], "contact", columns[8].Field, true); // Owner Column XrmLookupEditorOptions options = (XrmLookupEditorOptions)XrmLookupEditor.BindColumn(columns[9], vm.OwnerSearchCommand, "id", "name", "").Options; options.showFooter = true; // Account Column XrmLookupEditorOptions accountLookupOptions = (XrmLookupEditorOptions)XrmLookupEditor.BindColumn(columns[10], vm.AccountSearchCommand, "id", "name", "").Options; accountLookupOptions.showFooter = true; accountLookupOptions.footerButton = new XrmLookupEditorButton(); accountLookupOptions.footerButton.Label = "Add New"; accountLookupOptions.footerButton.Image = "/_imgs/add_10.png"; accountLookupOptions.footerButton.OnClick = vm.AddNewAccountInLine; // Create Grid GridDataViewBinder contactGridDataBinder = new GridDataViewBinder(); Grid contactsGrid = contactGridDataBinder.DataBindXrmGrid(vm.Contacts, columns, "container", "pager", true, false); // Data Bind ViewBase.RegisterViewModel(vm); Window.SetTimeout(delegate() { vm.Init(); }, 0); }