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 allSELECT GRID_JSON FROM MYTABLE WHERE CODE LIKE "%@#searchText%"
Utiliza este codigo de JavaScript para llenar el grid con el ID "myGrid":
Code: Select allfunction 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);
}
} );