BExIS.Web.Shell.Areas.DDM.Helpers.SearchUIHelper.ConvertTupleIntoDataRow C# (CSharp) Метод

ConvertTupleIntoDataRow() приватный статический Метод

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 ""
private static ConvertTupleIntoDataRow ( DataTable dt, AbstractTuple t, StructuredDataStructure sts ) : DataRow
dt System.Data.DataTable
t BExIS.Dlm.Entities.Data.AbstractTuple
sts BExIS.Dlm.Entities.DataStructure.StructuredDataStructure
Результат System.Data.DataRow
        private static DataRow ConvertTupleIntoDataRow(DataTable dt, AbstractTuple t, StructuredDataStructure sts)
        {
            DataRow dr = dt.NewRow();

            foreach(var vv in t.VariableValues)
            {
                if (vv.VariableId > 0)
                {
                    string valueAsString="";
                    if (vv.Value == null)
                    {
                        dr["ID" + vv.VariableId.ToString()] = DBNull.Value;
                    }
                    else
                    {
                        valueAsString = vv.Value.ToString();

                        Variable varr = sts.Variables.Where(p => p.Id == vv.VariableId).SingleOrDefault();
                        switch (varr.DataAttribute.DataType.SystemType)
                        {
                            case "String":
                            {
                                dr["ID" +vv.VariableId.ToString()] = valueAsString;
                                break;
                            }

                            case "Double":
                            {
                                double value;
                                if (double.TryParse(valueAsString, out value))
                                    dr["ID" + vv.VariableId.ToString()] = Convert.ToDouble(valueAsString);
                                else
                                    dr["ID" + vv.VariableId.ToString()] = -99999;//double.MaxValue;
                                break;
                            }

                            case "Int16":
                            {
                                Int16 value;
                                if(Int16.TryParse(valueAsString,out value))
                                    dr["ID" + vv.VariableId.ToString()] = Convert.ToInt16(valueAsString);
                                else
                                    dr["ID" + vv.VariableId.ToString()] = Int16.MaxValue;
                                break;
                            }

                            case "Int32":
                            {
                                Int32 value;
                                if(Int32.TryParse(valueAsString,out value))
                                    dr["ID" + vv.VariableId.ToString()] = Convert.ToInt32(valueAsString);
                                else
                                    dr["ID" + vv.VariableId.ToString()] = Int32.MaxValue;
                                break;
                            }

                            case "Int64":
                            {
                                Int64 value;
                                if(Int64.TryParse(valueAsString,out value))
                                    dr["ID" + vv.VariableId.ToString()] = Convert.ToInt64(valueAsString);
                                else
                                    dr["ID" + vv.VariableId.ToString()] = Int64.MaxValue;
                                break;
                            }

                            case "Decimal":
                            {
                                decimal value;
                                if (decimal.TryParse(valueAsString, out value))
                                    dr["ID" + vv.VariableId.ToString()] = Convert.ToDecimal(valueAsString);
                                else
                                    dr["ID" + vv.VariableId.ToString()] = -99999;//decimal.MaxValue;
                                break;
                            }

                            case "Float":
                            {
                                decimal value;
                                if (decimal.TryParse(valueAsString, out value))
                                    dr["ID" + vv.VariableId.ToString()] = Convert.ToDecimal(valueAsString);
                                else
                                    dr["ID" + vv.VariableId.ToString()] = -99999;
                                break;
                            }

                            case "DateTime":
                            {
                                    if (!String.IsNullOrEmpty(valueAsString))
                                        dr["ID"+vv.VariableId.ToString()] = Convert.ToDateTime(valueAsString, CultureInfo.InvariantCulture);
                                    else
                                        dr["ID" + vv.VariableId.ToString()] = DateTime.MaxValue;

                                break;
                            }

                            default:
                            {
                                if (!String.IsNullOrEmpty(vv.Value.ToString()))
                                    dr["ID"+vv.VariableId.ToString()] = valueAsString;
                                else
                                    dr["ID" + vv.VariableId.ToString()] = DBNull.Value;

                                break;
                            }
                        }
                    }

                    /*if (vv.ParameterValues.Count > 0)
                    {
                        foreach (var pu in vv.ParameterValues)
                        {
                            dr[pu.Parameter.Label.Replace(" ", "")] = pu.Value;
                        }
                    }*/
                }
            }

            return dr;
        }