Advertisement
Guest User

Nested Grid

a guest
Sep 11th, 2012
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.28 KB | None | 0 0
  1.  
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <title id='Description'>This example shows how to display nested Grid plugins.</title>
  6. <link rel="stylesheet" href="jqwidgets/styles/jqx.base.css" type="text/css" />
  7. <script type="text/javascript" src="scripts/jquery-1.7.2.min.js"></script>
  8. <script type="text/javascript" src="jqwidgets/jqxcore.js"></script>
  9. <script type="text/javascript" src="jqwidgets/jqxdata.js"></script>
  10. <script type="text/javascript" src="jqwidgets/jqxbuttons.js"></script>
  11. <script type="text/javascript" src="jqwidgets/jqxscrollbar.js"></script>
  12. <script type="text/javascript" src="jqwidgets/jqxmenu.js"></script>
  13. <script type="text/javascript" src="jqwidgets/jqxgrid.js"></script>
  14. <script type="text/javascript" src="jqwidgets/jqxgrid.selection.js"></script>
  15. <script type="text/javascript" src="jqwidgets/jqxgrid.filter.js"></script>
  16. <script type="text/javascript" src="scripts/gettheme.js"></script>
  17. <script type="text/javascript">
  18. $(document).ready(function () {
  19. var theme = getTheme();
  20.  
  21. var url = "sampledata/employees.xml";
  22.  
  23. var source =
  24. {
  25. datafields: [
  26. { name: 'FirstName' },
  27. { name: 'LastName' },
  28. { name: 'Title' },
  29. { name: 'Address' },
  30. { name: 'City' },
  31. ],
  32. root: "Employees",
  33. record: "Employee",
  34. id: 'EmployeeID',
  35. datatype: "xml",
  36. async: false,
  37. url: url
  38. };
  39.  
  40. var employeesAdapter = new $.jqx.dataAdapter(source);
  41.  
  42. var orderdetailsurl = "sampledata/orderdetails.xml";
  43.  
  44. var ordersSource =
  45. {
  46. datafields: [
  47. { name: 'EmployeeID' },
  48. { name: 'ShipName' },
  49. { name: 'ShipAddress' },
  50. { name: 'ShipCity' },
  51. { name: 'ShipCountry' },
  52. { name: 'ShippedDate' }
  53. ],
  54. root: "Orders",
  55. record: "Order",
  56. datatype: "xml",
  57. url: orderdetailsurl,
  58. async: false
  59. };
  60.  
  61. var ordersDataAdapter = new $.jqx.dataAdapter(ordersSource, { autoBind: true });
  62. orders = ordersDataAdapter.records;
  63.  
  64. // create nested grid.
  65. var initrowdetails = function (index, parentElement, gridElement, record) {
  66. var id = record.uid.toString();
  67. var grid = $($(parentElement).children()[0]);
  68.  
  69. var filtergroup = new $.jqx.filter();
  70. var filter_or_operator = 1;
  71. var filtervalue = id;
  72. var filtercondition = 'equal';
  73. var filter = filtergroup.createfilter('stringfilter', filtervalue, filtercondition);
  74. var ordersbyid = [];
  75. for (var m = 0; m < orders.length; m++) {
  76. var result = filter.evaluate(orders[m]["EmployeeID"]);
  77. if (result)
  78. ordersbyid.push(orders[i]);
  79. }
  80.  
  81. var orderssource = { datafields: [
  82. { name: 'EmployeeID' },
  83. { name: 'ShipName' },
  84. { name: 'ShipAddress' },
  85. { name: 'ShipCity' },
  86. { name: 'ShipCountry' },
  87. { name: 'ShippedDate' }
  88. ],
  89. id: 'OrderID',
  90. localdata: ordersbyid
  91. }
  92.  
  93. if (grid != null) {
  94. grid.jqxGrid({ source: orderssource, theme: theme, width: 600, height: 200,
  95. columns: [
  96. { text: 'Ship Name', datafield: 'ShipName', width: 200 },
  97. { text: 'Ship Address', datafield: 'ShipAddress', width: 200 },
  98. { text: 'Ship City', datafield: 'ShipCity', width: 150 },
  99. { text: 'Ship Country', datafield: 'ShipCountry', width: 150 },
  100. { text: 'Shipped Date', datafield: 'ShippedDate', width: 200 }
  101. ]
  102. });
  103. }
  104. }
  105.  
  106. var photorenderer = function (row, column, value) {
  107. var name = $('#jqxgrid').jqxGrid('getrowdata', row).FirstName;
  108. var imgurl = 'images/' + name.toLowerCase() + '.png';
  109. var img = '<div style="background: white;"><img style="margin:2px; margin-left: 10px;" width="32" height="32" src="' + imgurl + '"></div>';
  110. return img;
  111. }
  112.  
  113. var renderer = function (row, column, value) {
  114. return '<span style="margin-left: 4px; margin-top: 9px; float: left;">' + value + '</span>';
  115. }
  116.  
  117.  
  118. // creage jqxgrid
  119. $("#jqxgrid").jqxGrid(
  120. {
  121. width: 670,
  122. height: 365,
  123. source: source,
  124. theme: theme,
  125. rowdetails: true,
  126. rowsheight: 35,
  127. initrowdetails: initrowdetails,
  128. rowdetailstemplate: { rowdetails: "<div id='grid' style='margin: 10px;'></div>", rowdetailsheight: 220, rowdetailshidden: true },
  129. ready: function () {
  130. $("#jqxgrid").jqxGrid('showrowdetails', 1);
  131. },
  132. columns: [
  133. { text: 'Photo', width: 50, cellsrenderer: photorenderer },
  134. { text: 'First Name', datafield: 'FirstName', width: 100, cellsrenderer: renderer },
  135. { text: 'Last Name', datafield: 'LastName', width: 100, cellsrenderer: renderer },
  136. { text: 'Title', datafield: 'Title', width: 180, cellsrenderer: renderer },
  137. { text: 'Address', datafield: 'Address', width: 300, cellsrenderer: renderer },
  138. { text: 'City', datafield: 'City', width: 170, cellsrenderer: renderer }
  139. ]
  140. });
  141. });
  142. </script>
  143. </head>
  144. <body class='default'>
  145. <div id="jqxgrid">
  146. </div>
  147. </body>
  148. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement