private void TableGrid_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { if (tableGrid.Updating) { return; } tableGrid.Updating = true; MochaData[] datas = new MochaData[tableGrid.ColumnCount]; for (int index = 0; index < tableGrid.ColumnCount; index++) { MochaDataType dataType = Database.GetColumnDataType(TableName, tableGrid.Columns[index].HeaderText); if (dataType == MochaDataType.AutoInt) { int autoIntValue = Database.GetColumnAutoIntState(TableName, tableGrid.Columns[index].HeaderText); tableGrid.Rows[e.RowIndex - 1].Cells[index].Value = autoIntValue + 1; datas[index] = null; continue; } var data = new MochaData(dataType, MochaData.TryGetData(dataType, "")); datas[index] = data; tableGrid.Rows[e.RowIndex - 1].Cells[index].Value = data.Data; } tableGrid.Tag = datas[tableGrid.CurrentCell.ColumnIndex]; Database.AddRow(TableName, new MochaRow(datas)); tableGrid.Updating = false; }
/// <summary> /// Return data if the conversion successfully, but return null if not successfully. /// </summary> /// <param name="dataType">Targeting data type.</param> /// <param name="data">Data to convert.</param> public static object TryGetData(MochaDataType dataType, object data) { if (!IsType(dataType, data)) { if (dataType == MochaDataType.String || dataType == MochaDataType.Unique) { return(string.Empty); } else if (dataType == MochaDataType.Boolean) { return(false); } else { return(0); } } if (dataType == MochaDataType.String || dataType == MochaDataType.Unique) { return(data.ToString()); } return(GetDataFromString(dataType, data.ToString())); }
/// <summary> /// Convert value to MochaData. /// </summary> /// <param name="value">Value.</param> public static MochaData Parse(object value) { MochaDataType type = GetDataTypeFromType(value.GetType()); return(new MochaData( type, GetDataFromString(type, value.ToString()))); }
/// <summary> /// Check and process float value. /// </summary> /// <param name="type">DataType.</param> /// <param name="value">Value.</param> public static void CheckFloat(MochaDataType type, ref string value) { if ( type == MochaDataType.Decimal || type == MochaDataType.Double || type == MochaDataType.Float) { value = value.Replace('.', ','); } }
/// <summary> /// Create new MochaColumn. /// </summary> /// <param name="name">Name of column.</param> /// <param name="description">Description of column.</param> /// <param name="dataType">Data type of column.</param> /// <param name="datas">Datas of column.</param> public MochaColumn(string name, string description = "", MochaDataType dataType = MochaDataType.String, IEnumerable <MochaData> datas = null) : this() { Name = name; Description = description; DataType = dataType; if (datas != null) { Datas.AddRange(datas); } }
/// <summary> /// Return the data equality to the data type. /// </summary> /// <param name="dataType">Base datatype.</param> /// <param name="data">Data to check.</param> public static bool IsType(MochaDataType dataType, object data) { if (data == null) { return(false); } try { object testdata = GetDataFromString(dataType, data.ToString()); return(true); } catch { return(false); } }
/// <summary> /// Returns true if datatype is numeric, returns false if not. /// </summary> /// <param name="type">Datatype to check.</param> public static bool IsNumericType(MochaDataType type) => type == MochaDataType.AutoInt || type == MochaDataType.Bit || type == MochaDataType.Byte || type == MochaDataType.Decimal || type == MochaDataType.Double || type == MochaDataType.Float || type == MochaDataType.Int16 || type == MochaDataType.Int32 || type == MochaDataType.Int64 || type == MochaDataType.SByte || type == MochaDataType.UInt16 || type == MochaDataType.UInt64 || type == MochaDataType.BigInteger;
/// <summary> /// Add item. /// </summary> /// <param name="name">Name of item.</param> /// <param name="datatype">Datatype of item.</param> public void Add(string name, MochaDataType datatype) => Add(new MochaColumn(name, datatype));
/// <summary> /// Create new instance of <see cref="MochaData"/>. /// </summary> /// <param name="dataType">Data type of data.</param> /// <param name="data">Data value.</param> public MochaData(MochaDataType dataType, object data) { this.data = data; DataType = dataType; }
/// <summary> /// Return the object value according to the data type from the string value. /// </summary> /// <param name="dataType">Targetting data type.</param> /// <param name="data">String data.</param> public static object GetDataFromString(MochaDataType dataType, string data) { if (data == null) { throw new NullReferenceException("Data is cannot null!"); } if (dataType == MochaDataType.String || dataType == MochaDataType.Unique) { return(data); } if (dataType == MochaDataType.AutoInt || dataType == MochaDataType.Int32) { return(int.Parse(data)); } if (dataType == MochaDataType.Byte) { return(byte.Parse(data)); } if (dataType == MochaDataType.Char) { return(char.Parse(data)); } if (dataType == MochaDataType.Decimal) { return(decimal.Parse(data)); } if (dataType == MochaDataType.Double) { return(double.Parse(data)); } if (dataType == MochaDataType.Float) { return(float.Parse(data)); } if (dataType == MochaDataType.Int16) { return(short.Parse(data)); } if (dataType == MochaDataType.Int64) { return(long.Parse(data)); } if (dataType == MochaDataType.Byte) { return(byte.Parse(data)); } if (dataType == MochaDataType.Boolean) { return(bool.Parse(data)); } if (dataType == MochaDataType.SByte) { return(sbyte.Parse(data)); } if (dataType == MochaDataType.UInt16) { return(ushort.Parse(data)); } if (dataType == MochaDataType.UInt32) { return(uint.Parse(data)); } if (dataType == MochaDataType.UInt64) { return(ulong.Parse(data)); } if (dataType == MochaDataType.DateTime) { return(DateTime.Parse(data)); } if (dataType == MochaDataType.BigInteger) { return(BigInteger.Parse(data)); } return(Bit.Parse(data)); }
/// <summary> /// Return Type object from DataType targeting data. /// </summary> /// <param name="dataType">Targeted data type.</param> public static Type GetTypeFromDataType(MochaDataType dataType) { if (dataType == MochaDataType.String || dataType == MochaDataType.Unique) { return(typeof(string)); } if (dataType == MochaDataType.Byte) { return(typeof(byte)); } if (dataType == MochaDataType.Char) { return(typeof(char)); } if (dataType == MochaDataType.Decimal) { return(typeof(decimal)); } if (dataType == MochaDataType.Double) { return(typeof(double)); } if (dataType == MochaDataType.Float) { return(typeof(float)); } if (dataType == MochaDataType.Int16) { return(typeof(short)); } if (dataType == MochaDataType.Int32 || dataType == MochaDataType.AutoInt) { return(typeof(int)); } if (dataType == MochaDataType.Int64) { return(typeof(long)); } if (dataType == MochaDataType.Boolean) { return(typeof(bool)); } if (dataType == MochaDataType.SByte) { return(typeof(sbyte)); } if (dataType == MochaDataType.UInt16) { return(typeof(ushort)); } if (dataType == MochaDataType.UInt32) { return(typeof(uint)); } if (dataType == MochaDataType.UInt64) { return(typeof(ulong)); } if (dataType == MochaDataType.DateTime) { return(typeof(DateTime)); } if (dataType == MochaDataType.BigInteger) { return(typeof(BigInteger)); } return(typeof(Bit)); }
private void TableGrid_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (tableGrid.Updating) { return; } if (e.RowIndex >= tableGrid.RowCount - 1) { return; } tableGrid.Updating = true; #if DEBUG var stopwatch = new Stopwatch(); stopwatch.Start(); #endif MochaDataType dataType = Database.GetColumnDataType( TableName, tableGrid.Columns[e.ColumnIndex].HeaderText); try { var value = tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; if (value != tableGrid.Tag) { if ( dataType == MochaDataType.Decimal || dataType == MochaDataType.Double || dataType == MochaDataType.Float) { tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = value.ToString().Replace('.', ','); } value = value ?? string.Empty; Database.UpdateData(TableName, tableGrid.Columns[e.ColumnIndex].HeaderText, e.RowIndex, value); } } catch (Exception excep) { tableGrid.Updating = false; if (dataType == MochaDataType.AutoInt) { if (tableGrid.Rows.Count == 1) { tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1; } else { var value = 1 + decimal.Parse(tableGrid.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString()); tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = value; } } else { tableGrid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = tableGrid.Tag; } errorbox.Show(excep.ToString()); } #if DEBUG stopwatch.Stop(); Console.WriteLine("Table_CellEndEdit: " + stopwatch.ElapsedMilliseconds); #endif tableGrid.Updating = false; }
/// <summary> /// Create new MochaColumnDataCollection. /// </summary> /// <param name="dataType">DataType of column.</param> public MochaColumnDataCollection(MochaDataType dataType) { collection = new List <MochaData>(); this.dataType = dataType; }
/// <summary> /// Create new MochaColumn. /// </summary> /// <param name="name">Name of column.</param> /// <param name="dataType">Data type of column.</param> public MochaColumn(string name, MochaDataType dataType, IEnumerable <MochaData> datas) : this(name, dataType) { Datas.AddRange(datas); }
/// <summary> /// Create new MochaColumn. /// </summary> /// <param name="name">Name of column.</param> /// <param name="dataType">Data type of column.</param> public MochaColumn(string name, MochaDataType dataType) : this(name) { Name = name; DataType = dataType; }