private DataRow ConvertTupleIntoDataRow(DataTable dt, AbstractTuple t, StructuredDataStructure sts) { DataRow dr = dt.NewRow(); string columnName = ""; foreach (var vv in t.VariableValues) { columnName = "var" + vv.VariableId.ToString(); if (vv.VariableId > 0) { string valueAsString = ""; if (vv.Value == null) { dr[columnName] = DBNull.Value; } else { valueAsString = vv.Value.ToString(); Dlm.Entities.DataStructure.Variable varr = sts.Variables.Where(p => p.Id == vv.VariableId).SingleOrDefault(); switch (varr.DataAttribute.DataType.SystemType) { case "String": { dr[columnName] = valueAsString; break; } case "Double": { double value; if (double.TryParse(valueAsString, out value)) { dr[columnName] = value; } else { dr[columnName] = double.MaxValue; } break; } case "Int16": { Int16 value; if (Int16.TryParse(valueAsString, out value)) { dr[columnName] = value; } else { dr[columnName] = Int16.MaxValue; } break; } case "Int32": { Int32 value; if (Int32.TryParse(valueAsString, out value)) { dr[columnName] = value; } else { dr[columnName] = Int32.MaxValue; } break; } case "Int64": { Int64 value; if (Int64.TryParse(valueAsString, out value)) { dr[columnName] = value; } else { dr[columnName] = Int64.MaxValue; } break; } case "Decimal": { decimal value; if (decimal.TryParse(valueAsString, out value)) { dr[columnName] = value; } else { dr[columnName] = decimal.MaxValue; } break; } case "Float": { decimal value; if (decimal.TryParse(valueAsString, out value)) { dr[columnName] = value; } else { dr[columnName] = decimal.MaxValue; } break; } case "DateTime": { if (!String.IsNullOrEmpty(valueAsString)) { dr[columnName] = Convert.ToDateTime(valueAsString, CultureInfo.InvariantCulture); } else { dr[columnName] = DateTime.MaxValue; } break; } default: { if (!String.IsNullOrEmpty(vv.Value.ToString())) { dr[columnName] = valueAsString; } else { dr[columnName] = DBNull.Value; } break; } } } } } return(dr); }
/// <summary> /// This function convert a datatuple into datarow for a datatable to show on the client side /// the grid in the client side (in client mode) has unknow problem with value 0 and null /// So every empty cell get the max value of the specific Systemtype. /// On the client side this values replaced with "" /// </summary> /// <param name="dt"></param> /// <param name="t"></param> /// <returns></returns> private static DataRow ConvertTupleIntoDataRow(DataTable dt, AbstractTuple t, StructuredDataStructure sts, bool useLabelsAsColumnName = false) { DataRow dr = dt.NewRow(); string columnName = ""; foreach (var vv in t.VariableValues) { Variable variable = sts.Variables.FirstOrDefault(v => v.Id.Equals(vv.VariableId)); columnName = useLabelsAsColumnName == true ? variable.Label : "ID" + vv.VariableId.ToString(); if (vv.VariableId > 0) { string valueAsString = ""; if (vv.Value == null) { dr[columnName] = DBNull.Value; } else { valueAsString = vv.Value.ToString(); Dlm.Entities.DataStructure.Variable varr = sts.Variables.Where(p => p.Id == vv.VariableId).SingleOrDefault(); switch (varr.DataAttribute.DataType.SystemType) { case "String": { dr[columnName] = valueAsString; break; } case "Double": { double value; if (double.TryParse(valueAsString, out value)) { dr[columnName] = Convert.ToDouble(valueAsString); } else { dr[columnName] = -99999; //double.MaxValue; } break; } case "Int16": { Int16 value; if (Int16.TryParse(valueAsString, out value)) { dr[columnName] = Convert.ToInt16(valueAsString); } else { dr[columnName] = Int16.MaxValue; } break; } case "Int32": { Int32 value; if (Int32.TryParse(valueAsString, out value)) { dr[columnName] = Convert.ToInt32(valueAsString); } else { dr[columnName] = Int32.MaxValue; } break; } case "Int64": { Int64 value; if (Int64.TryParse(valueAsString, out value)) { dr[columnName] = Convert.ToInt64(valueAsString); } else { dr[columnName] = Int64.MaxValue; } break; } case "Decimal": { decimal value; if (decimal.TryParse(valueAsString, out value)) { dr[columnName] = Convert.ToDecimal(valueAsString); } else { dr[columnName] = -99999; //decimal.MaxValue; } break; } case "Float": { decimal value; if (decimal.TryParse(valueAsString, out value)) { dr[columnName] = Convert.ToDecimal(valueAsString); } else { dr[columnName] = -99999; } break; } case "DateTime": { if (!String.IsNullOrEmpty(valueAsString)) { dr[columnName] = Convert.ToDateTime(valueAsString, CultureInfo.InvariantCulture); } else { dr[columnName] = DateTime.MaxValue; } break; } default: { if (!String.IsNullOrEmpty(vv.Value.ToString())) { dr[columnName] = valueAsString; } else { dr[columnName] = DBNull.Value; } break; } } } /*if (vv.ParameterValues.Count > 0) * { * foreach (var pu in vv.ParameterValues) * { * dr[pu.Parameter.Label.Replace(" ", "")] = pu.Value; * } * }*/ } } return(dr); }