Exemplo n.º 1
0
        protected virtual void OnCellValueChanged(object sender, CellValueChangedEventArgs args)
        {
            GridItem item = (GridItem)this.gridControl.SelectedItem;

            if (item == null)
            {
                item = (GridItem)this.gridControl.CurrentItem;
            }
            if (item != null)
            {
                int?         oid      = item.GetOid();
                GridColumn   col      = args.Column;
                GrilleColumn column   = this.Grille.GetColumn(col.FieldName);
                string       oldValue = item.Datas[column.position] != null ? item.Datas[column.position].ToString() : "";
                string       newValue = args.Value != null?args.Value.ToString() : "";

                GrilleEditedElement element = new GrilleEditedElement();
                element.column = column;
                element.oid    = oid;

                //if (newValue.Equals(oldValue)) return;
                if (column.type.Equals(ParameterType.MEASURE.ToString()))
                {
                    decimal val = 0;
                    if (string.IsNullOrWhiteSpace(newValue))
                    {
                        val = 0;
                    }
                    else if (decimal.TryParse(newValue, out val))
                    {
                        element.measure = val;
                    }
                    else if (decimal.TryParse(newValue.Replace(".", ","), out val))
                    {
                        element.measure = val;
                    }
                    else
                    {
                        MessageDisplayer.DisplayError("Wrong measure", "'" + newValue + "'" + " is not a decimal!");
                        args.Handled = true;
                        //args.Value = args.OldValue;
                        return;
                    }
                }
                else if (column.type.Equals(ParameterType.SCOPE.ToString()))
                {
                    if (string.IsNullOrWhiteSpace(newValue))
                    {
                        element.value = null;
                    }
                    else
                    {
                        BrowserData data = column.getValue(newValue);
                        if (!AllowUnknowValueForScope && data == null)
                        {
                            MessageDisplayer.DisplayError("Wrong value", "Unknow value : '" + newValue + "'");
                            args.Handled = true;
                            return;
                        }
                        else
                        {
                            element.value = data;
                        }
                    }
                }
                if (column.type.Equals(ParameterType.PERIOD.ToString()))
                {
                    DateTime date;
                    if (string.IsNullOrWhiteSpace(newValue))
                    {
                        element.date = null;
                    }
                    else if (DateTime.TryParse(newValue, out date))
                    {
                        element.date = date.ToShortDateString();
                    }
                    else
                    {
                        MessageDisplayer.DisplayError("Wrong date", "'" + newValue + "'" + " is not a date!");
                        args.Handled = true;
                        return;
                    }
                }

                if (this.EditEventHandler != null)
                {
                    GrilleEditedResult result = EditEventHandler(element);
                    if (result.isError)
                    {
                        MessageDisplayer.DisplayError("Wrong value", result.error);
                        args.Handled = true;
                        return;
                    }
                    else
                    {
                        if (result.datas == null)
                        {
                            args.Handled = true;
                        }
                        else
                        {
                            item.Datas = result.datas;
                        }
                        Refresh();
                        //this.grid.SelectedItem = item;
                    }
                }
            }
        }