Exemple #1
0
 protected void SetData(DataSet ds)
 {
     if (ds.Tables.Count > 0)
     {
         try
         {
             JsonDataSet.SetDebugMode(DEBUG, Response);
             if (serverResponse.Data == null)
             {
                 if (DEBUG)
                 {
                     Response.Write(" SetData <br>");
                 }
                 serverResponse.Data = new JsonDataSet(ds);
             }
             else
             {
                 if (DEBUG)
                 {
                     Response.Write(" MergeDataSet <br>");
                 }
                 serverResponse.Data.MergeDataSet(new JsonDataSet(ds));
             }
         }
         catch (Exception err)
         {
             Response.Write("Error setting data<br>");
             OutputException(err);
         }
     }
 }
 public void MergeDataSet(JsonDataSet jds)
 {
     if (string.IsNullOrEmpty(DataSetName))
     {
         DataSetName = jds.DataSetName;
     }
     if (Locale == 0)
     {
         Locale = jds.Locale;
     }
     if (Tables == null)
     {
         Tables = jds.Tables;
     }
     else
     {
         if (jds.Tables != null && jds.Tables.Length > 0)
         {
             for (int i = 0; i < jds.Tables.Length; i++)
             {
                 bool found = false;
                 for (int j = 0; j < Tables.Length; j++)
                 {
                     if (string.Compare(jds.Tables[i].TableName, Tables[j].TableName, StringComparison.OrdinalIgnoreCase) == 0)
                     {
                         found = true;
                         break;
                     }
                 }
                 if (!found)
                 {
                     int             n    = Tables.Length;
                     JsonDataTable[] newT = new JsonDataTable[n + 1];
                     if (n > 0)
                     {
                         Tables.CopyTo(newT, 0);
                     }
                     newT[n] = jds.Tables[i];
                     Tables  = newT;
                 }
             }
         }
     }
 }
 public void FromJsonText(string jsonText)
 {
     Calls = new RequestCommand[] { };
     Data  = null;
     if (!string.IsNullOrEmpty(jsonText))
     {
         JavaScriptSerializer js = new JavaScriptSerializer();
         IJsonObject          jo = Json.StringToJson(jsonText);
         if (jo != null)
         {
             JsonDataPropertyBag prb = jo as JsonDataPropertyBag;
             if (prb != null)
             {
                 IJsonValue jv;
                 if (prb.TryGetValue("Calls", out jv))
                 {
                     JsonDataArray callsX = jv as JsonDataArray;
                     if (callsX != null)
                     {
                         if (callsX.Count > 0)
                         {
                             Calls = new RequestCommand[callsX.Count];
                             for (int i = 0; i < callsX.Count; i++)
                             {
                                 Calls[i] = new RequestCommand();
                                 JsonDataPropertyBag pb = callsX[i] as JsonDataPropertyBag;
                                 if (pb != null)
                                 {
                                     if (pb.TryGetValue("method", out jv))
                                     {
                                         JsonDataString sv = jv as JsonDataString;
                                         if (sv != null)
                                         {
                                             Calls[i].method = sv.ValueString;
                                         }
                                     }
                                     if (pb.TryGetValue("value", out jv))
                                     {
                                         JsonDataString sv = jv as JsonDataString;
                                         if (sv != null)
                                         {
                                             Calls[i].value = sv.ValueString;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
                 JsonDataArray clientData;
                 IJsonValue    jvalue;
                 if (prb.TryGetValue("values", out jvalue))
                 {
                     values = jvalue as JsonDataPropertyBag;
                 }
                 if (prb.TryGetValue("Data", out jvalue))
                 {
                     clientData = jvalue as JsonDataArray;
                     if (clientData != null)
                     {
                         Data        = new JsonDataSet();
                         Data.Tables = new JsonDataTable[clientData.Count];
                         for (int i = 0; i < clientData.Count; i++)
                         {
                             JsonDataTableUpdate tbl = new JsonDataTableUpdate();
                             Data.Tables[i] = tbl;
                             if (clientData[i] != null)
                             {
                                 JsonDataPropertyBag pb = clientData[i] as JsonDataPropertyBag;
                                 if (pb != null)
                                 {
                                     JsonDataArray rows;
                                     if (pb.TryGetValue("TableName", out jv))
                                     {
                                         JsonDataString name = jv as JsonDataString;
                                         Data.Tables[i].TableName = name.ValueString;
                                     }
                                     if (pb.TryGetValue("Columns", out jv))
                                     {
                                         JsonDataArray pbc = jv as JsonDataArray;
                                         if (pbc != null && pbc.Count > 0)
                                         {
                                             Data.Tables[i].Columns = new JsonDataColumn[pbc.Count];
                                             for (int c = 0; c < pbc.Count; c++)
                                             {
                                                 Data.Tables[i].Columns[c] = new JsonDataColumn();
                                                 JsonDataPropertyBag jsc = pbc[c] as JsonDataPropertyBag;
                                                 if (jsc != null)
                                                 {
                                                     if (jsc.TryGetValue("Name", out jv))
                                                     {
                                                         JsonDataString jds = jv as JsonDataString;
                                                         if (jds != null)
                                                         {
                                                             Data.Tables[i].Columns[c].Name = jds.ValueString;
                                                         }
                                                     }
                                                     if (jsc.TryGetValue("ReadOnly", out jv))
                                                     {
                                                         JsonDataBool jdb = jv as JsonDataBool;
                                                         if (jdb != null)
                                                         {
                                                             Data.Tables[i].Columns[c].ReadOnly = jdb.ValueBool;
                                                         }
                                                     }
                                                     if (jsc.TryGetValue("Type", out jv))
                                                     {
                                                         JsonDataString jds = jv as JsonDataString;
                                                         if (jds != null)
                                                         {
                                                             Data.Tables[i].Columns[c].Type = jds.ValueString;
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                     if (pb.TryGetValue("PrimaryKey", out jv))
                                     {
                                         JsonDataArray pbc = jv as JsonDataArray;
                                         if (pbc != null && pbc.Count > 0)
                                         {
                                             Data.Tables[i].PrimaryKey = new string[pbc.Count];
                                             for (int c = 0; c < pbc.Count; c++)
                                             {
                                                 Data.Tables[i].PrimaryKey[c] = pbc[c].ToString();
                                             }
                                         }
                                     }
                                     if (pb.TryGetValue("rowIndex", out jv))
                                     {
                                         JsonDataNumber jn = jv as JsonDataNumber;
                                         if (jn != null)
                                         {
                                             tbl.RowIndex = jn.ValueNumber;
                                         }
                                     }
                                     if (pb.TryGetValue("Rows", out jv))
                                     {
                                         rows = jv as JsonDataArray;
                                         if (rows != null)
                                         {
                                             Data.Tables[i].Rows = new JsonDataRow[rows.Count];
                                             for (int m = 0; m < rows.Count; m++)
                                             {
                                                 JsonDataPropertyBag r = rows[m] as JsonDataPropertyBag;
                                                 if (r != null)
                                                 {
                                                     JsonDataRowUpdate jdr = new JsonDataRowUpdate();
                                                     Data.Tables[i].Rows[m] = jdr;
                                                     if (r.TryGetValue("KeyValues", out jv))
                                                     {
                                                         JsonDataArray keys = jv as JsonDataArray;
                                                         if (keys != null)
                                                         {
                                                             jdr.KeyValues = new object[keys.Count];
                                                             for (int k = 0; k < keys.Count; k++)
                                                             {
                                                                 if (keys[k] != null)
                                                                 {
                                                                     JsonDataValue jdv = keys[k] as JsonDataValue;
                                                                     if (jdv != null)
                                                                     {
                                                                         jdr.KeyValues[k] = jdv.Value;
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                     if (r.TryGetValue("added", out jv))
                                                     {
                                                         if (((JsonDataBool)jv).ValueBool)
                                                         {
                                                             jdr.Added = true;
                                                         }
                                                     }
                                                     if (r.TryGetValue("deleted", out jv))
                                                     {
                                                         if (((JsonDataBool)jv).ValueBool)
                                                         {
                                                             jdr.Deleted = true;
                                                         }
                                                     }
                                                     if (r.TryGetValue("ItemArray", out jv))
                                                     {
                                                         JsonDataArray rowsData = jv as JsonDataArray;
                                                         if (rowsData != null)
                                                         {
                                                             Data.Tables[i].Rows[m].ItemArray = new object[rowsData.Count];
                                                             if (rowsData.Count > 0)
                                                             {
                                                                 for (int c = 0; c < rowsData.Count; c++)
                                                                 {
                                                                     if (rowsData[c] != null)
                                                                     {
                                                                         JsonDataValue jv0 = rowsData[c] as JsonDataValue;
                                                                         if (jv0 != null)
                                                                         {
                                                                             Data.Tables[i].Rows[m].ItemArray[c] = jv0.Value;
                                                                         }
                                                                         else
                                                                         {
                                                                             JsonDataArray jva = rowsData[c] as JsonDataArray;
                                                                             if (jva != null)
                                                                             {
                                                                                 Data.Tables[i].Rows[m].ItemArray[c] = jva.ToByteArray();
                                                                             }
                                                                         }
                                                                     }
                                                                 }
                                                             }
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
                 OnParseJsonText(prb);
             }
         }
     }
 }