Un foro de discusión para nuestra comunidad de hispano hablante
By andrewtwo
#787854
Hola estoy trabajando con ajax y necesito guardar todo el control grid en un solo campo de tipo longvarchar la idea es guardar todo el arreglo en ese campo y luego recuperar esos datos y mostrarlos en el formulario desde el ajax cuando haga la petición no se que tanta dificultad tenga esta tarea de la manera como lo pienso trabajar existe algún ejemplo de este tema o seria mas recomendable guardar esos datos en una tabla independiente? pero eso implicaría hacer otra petición ajax para traer los datos de esa otra tabla. Que me recomendarías para este caso.

Gracias
Saludos
#787855
Aca esta codigo para guardar el grid en la base de datos con un trigger:
Code: Select all
$myGridJson = json_encode(@=myGrid);
//if using a MySQL database:
$myGridJson = mysql_real_escape_string($myGridJson);
//if using other types of databases:
//$myGridJson = addslashes($myGridJson);
$db = 'XXXXXXXXXXXXXXXXXXXXXXXX'; //ID of database connection if using an external DB.
$caseId = @@APPLICATION;
$sql = "INSERT INTO MYTABLE (CASE_ID, CODE, GRID_JSON) VALUES ('$caseId', 'XXXXXXXXXXXX', '$mGridJson')";
executeQuery($sql, $db);
En tu dynaForm, crea un textbox con la ID "searchText" y un hidden con la ID "sqlResult" y el sql:
Code: Select all
SELECT GRID_JSON FROM MYTABLE WHERE CODE LIKE "%@#searchText%"
Utiliza este codigo de JavaScript para llenar el grid con el ID "myGrid":
Code: Select all
function clearGrid(gridId) {
   var nRow = $("#"+gridId).getNumberRows();
   for (; nRow >= 1; nRow--) {
      //Can't delete the first row, so clear all its fields
      if (nRow == 1) {
         var aCols = $("#"+gridId).getInfo().columns;
         for (nField in aCols) {
            var val = '';
            if (aCols[nField].type == 'checkbox') {
               val = "0";
            }
            //workaround to clear date fields. See: https://processmaker.atlassian.net/browse/TRI-1280
            if (aCols[nField].type == 'datetime') {
               var gridFieldId = 'form[' + gridName + '][1][' + aCols[nField].id;
               $("[id='"+gridFieldId+"]']").val('');
               $("[id='"+gridFieldId+"_label]']").val('');
            }
            else if (aCols[nField].type != 'link') {
               $("#"+gridId).setValue(val, 1, parseInt(nField)+1);
            }      
         }
      }
      else {
         $("#"+gridId).deleteRow(nRow);
      }      
   }
}

$("#searchText").setOnchange( function(newVal, oldVal) {  
   clearGrid("myGrid");
   if (newVal == "") {
      return;
   }
   var myGridContents = getFieldById("sqlResult").executeQuery();
   oGrid = JSON.parse(myGridContents);
   for (rowIndex in oGrid) {
        var oRow = oGrid[rowIndex];
        var aNewRow = [];
        for (nField in oRow) {
             aNewRow.push( {value: oRow[nField]} );
        }
        $("#myGrid").addRow(aNewRow);
   }
} );

To export Gmail emails to an Office 365 account, y[…]

ProstaBiome Customer Reviews

ProstaBiome Review 2024 - Yes, ProstaBiome is gene[…]

ProstaBiome Advantages

The Benefits of ProstaBiome for Prostate Health I[…]

Non-fungible tokens (NFTs) have surged in populari[…]