Merge pull request #2916 from ludovic-henry/fix-40306
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / GridView.js
index d7dda1c1c14c7712d69f38144b9371208c5d0438..88830d25c8943ee0fc1c898c55a44781ef475148 100644 (file)
@@ -1,21 +1,37 @@
 function GridView_ClientEvent (ctrlId, evnt)
 {
-       var gridData = eval (ctrlId + "_data");
-       var clientData = gridData.pageIndex + '|' + escape (gridData.sortExp) + '|' + evnt;
-       WebForm_DoCallback (gridData.uid, clientData, GridView_ClientRender, ctrlId, GridView_ClientRender_Error);
+       var gridData = getGrid (ctrlId);
+       if (!gridData)
+           return null;
+       var clientData = gridData.pageIndex + '|' + escape (gridData.sortExp) + '|' + gridData.sortDir + '|' + evnt;
+       WebForm_DoCallback (gridData.uid, clientData, GridView_ClientRender, ctrlId, GridView_ClientRender_Error, false, gridData.form);
 }
 
 function GridView_ClientRender (data, ctx)
 {
-       var gridData = eval (ctx + "_data");
-       var grid = document.getElementById (ctx);
+       var gridData = getGrid (ctx);
+       if (!gridData)
+           return;
+       var grid = document.getElementById (ctx + "_div");
        var i = data.indexOf ("|");
        var j = data.indexOf ("|", i+1);
+       var k = data.indexOf ("|", j+1);
        gridData.pageIndex = parseInt (data.substring (0, i));
        gridData.sortExp = unescape (data.substring (i+1, j));
-       grid.innerHTML = data.substr (j+1);
+       gridData.sortDir = parseInt (data.substring (j+1, k));
+       grid.innerHTML = data.substr (k+1);
+       
+       var page = document.getElementById(ctx + "_Page");
+       page.value = gridData.pageIndex;
+       var sortExp = document.getElementById(ctx + "_SortExpression");
+       sortExp.value = gridData.sortExp;
+       var sortDir = document.getElementById(ctx + "_SortDirection");
+       sortDir.value = gridData.sortDir;
 }
 
 function GridView_ClientRender_Error (data, ctx)
 {
 }
+
+function getGrid (gridId) { try { return eval (gridId + "_data"); } catch(e) { return null; } }
+