2015-01-07 2 views
0

Привет Я получаю ошибку при выборе снова выпадающий в додзеОшибка: Пробовал виджет зарегистрировать с идентификатором == class_level_grid но идентификатор уже зарегистрирован в додзе

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1" 
    %> 
    <!DOCTYPE html> 
    <html> 
    <head> 
    <script> 

    function onReportTypesSelect() 
    { 
     if(getDijitValue('data_types') != 'Select') 
      { 

      if(getDijitValue('data_types') == 'class_level') 
      { 
       require([ 
          "dojo/store/JsonRest", 
          "dojo/store/Memory", 
          "dojo/store/Cache", 
          "dojox/grid/DataGrid", 
          "dojo/data/ObjectStore", 
          "dojo/query", 
          "dojo/domReady!" 

         ], function(JsonRest, Memory, Cache, DataGrid, ObjectStore, query){ 
          var userStore, dataStore, grid; 
          userStore = new Cache(JsonRest({target: "<%=request.getContextPath()%>" + "/data/classServlet"}), new Memory()); 
          grid = new DataGrid({ 
           id:"class_level_grid", 
           store: dataStore = new ObjectStore({objectStore: userStore}), 
           structure: [ 
              {name: 'Roll Number', field: 'roll', width: 'auto', defaultValue: ""}, 
              {name: 'Name', field: 'name', width: '100px', defaultValue: ""}, 
              {name: 'Class', field: 'class', width: '75px', defaultValue: ""} 
           ], 
          style:"font-family: calibri, Garamond, Comic Sans; font-size: 10;", 
          selectionMode:'single', 
          autoHeight: 10, 
          rowsPerPage:40, 
          rowSelector:'20px', 
          selectable: true 
          } 

          , "class_level_grid_div"); // make sure you have a target HTML element with this id 
          grid.startup(); 

         }); 

      } 
    if(getDijitValue('data_types') == 'class_level2') 
      { 
       require([ 
          "dojo/store/JsonRest", 
          "dojo/store/Memory", 
          "dojo/store/Cache", 
          "dojox/grid/DataGrid", 
          "dojo/data/ObjectStore", 
          "dojo/query", 
          "dojo/domReady!" 

         ], function(JsonRest, Memory, Cache, DataGrid, ObjectStore, query){ 
          var userStore, dataStore, grid; 
          userStore = new Cache(JsonRest({target: "<%=request.getContextPath()%>" + "/data/class2Servlet"}), new Memory()); 
          grid = new DataGrid({ 
           id:"class_level2_grid", 
           store: dataStore = new ObjectStore({objectStore: userStore}), 
           structure: [ 
              {name: 'Roll Number', field: 'roll', width: 'auto', defaultValue: ""}, 
              {name: 'Name', field: 'name', width: '100px', defaultValue: ""}, 
              {name: 'Class', field: 'class', width: '75px', defaultValue: ""} 
           ], 
          style:"font-family: calibri, Garamond, Comic Sans; font-size: 10;", 
          selectionMode:'single', 
          autoHeight: 10, 
          rowsPerPage:40, 
          rowSelector:'20px', 
          selectable: true 
          } 

          , "class_level2_grid_div"); // make sure you have a target HTML element with this id 
          grid.startup(); 

         }); 

      } 

    } 
    } 
    </script> 
    </head>`enter code here` 
    <body> 
    <div id="data_types" data-dojo-type="dijit/form/Select" style="width: 200px;" onchange="onReportTypesSelect()"> 
         <span data-dojo-value="Select"><b>Select</b></span> 
         <span data-dojo-value="class_level"><b>class Level</b></span> 
         <span data-dojo-value="class_level2"><b>class Level</b></span> 
    </div> 
    <div id="class_level_grid_div" style="width: 95%; height: 90%;"> </div> 
    </div> 
    <div id="class_level2_grid_div" style="width: 95%; height: 90%;"> </div> 
    </div> 
    </body> 
    </html> 

Ошибка грядет, как ошибка: попытка для регистрации виджета с id == class_level_grid, но этот идентификатор уже зарегистрирован. , когда снова выбирая снизу, любезно помогите мне.

ответ

1

вы не можете заполнить сетку над другой сеткой, не разрушая первую созданную вами.

так что если у вас есть сетка с id = MyGrid, размещенная в div, этот div будет удален, и сетка заменит его.

так что вы должны использовать два метода placeAt и grid.destroyRecursive(true);

ниже код должен работать нормально.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1" 
    %> 
    <!DOCTYPE html> 
    <html> 
    <head> 
    <script> 

    function onReportTypesSelect() 
    { 
     if(getDijitValue('data_types') != 'Select') 
      { 

      if(getDijitValue('data_types') == 'class_level') 
      { 
       require([ 
          "dojo/store/JsonRest", 
          "dojo/store/Memory", 
          "dojo/store/Cache", 
          "dojox/grid/DataGrid", 
          "dojo/data/ObjectStore", 
          "dojo/query", 
          "dijit/registry", 
          "dojo/domReady!" 

         ], function(JsonRest, Memory, Cache, DataGrid, ObjectStore, query,registry){ 
         //we are checking here if the grid with that ID already exists and if yes destroy it 
         if(typeof registry.byId("class_level_grid_div") != "undefined"){ 
         registry.byId("class_level_grid_div").destroyRecursive(); 
         } 
          var userStore, dataStore, grid; 
          userStore = new Cache(JsonRest({target: "<%=request.getContextPath()%>" + "/data/classServlet"}), new Memory()); 
          grid = new DataGrid({ 
           id:"class_level_grid", 
           store: dataStore = new ObjectStore({objectStore: userStore}), 
           structure: [ 
              {name: 'Roll Number', field: 'roll', width: 'auto', defaultValue: ""}, 
              {name: 'Name', field: 'name', width: '100px', defaultValue: ""}, 
              {name: 'Class', field: 'class', width: '75px', defaultValue: ""} 
           ], 
          style:"font-family: calibri, Garamond, Comic Sans; font-size: 10;", 
          selectionMode:'single', 
          autoHeight: 10, 
          rowsPerPage:40, 
          rowSelector:'20px', 
          selectable: true 
          }).placeAt("class_level_grid_div"); // use the placeAt so you don't replace the dom 
          grid.startup(); 

         }); 

      } 
    if(getDijitValue('data_types') == 'class_level2') 
      { 
       require([ 
          "dojo/store/JsonRest", 
          "dojo/store/Memory", 
          "dojo/store/Cache", 
          "dojox/grid/DataGrid", 
          "dojo/data/ObjectStore", 
          "dojo/query", 
          "dijit/registry", 
          "dojo/domReady!" 

         ], function(JsonRest, Memory, Cache, DataGrid, ObjectStore, query,registry){ 
          var userStore, dataStore, grid; 

           if(typeof registry.byId("class_level2_grid_div") != "undefined"){ 
         registry.byId("class_level2_grid_div").destroyRecursive(); 
         } 


          userStore = new Cache(JsonRest({target: "<%=request.getContextPath()%>" + "/data/class2Servlet"}), new Memory()); 
          grid = new DataGrid({ 
           id:"class_level2_grid", 
           store: dataStore = new ObjectStore({objectStore: userStore}), 
           structure: [ 
              {name: 'Roll Number', field: 'roll', width: 'auto', defaultValue: ""}, 
              {name: 'Name', field: 'name', width: '100px', defaultValue: ""}, 
              {name: 'Class', field: 'class', width: '75px', defaultValue: ""} 
           ], 
          style:"font-family: calibri, Garamond, Comic Sans; font-size: 10;", 
          selectionMode:'single', 
          autoHeight: 10, 
          rowsPerPage:40, 
          rowSelector:'20px', 
          selectable: true 
          }).placeAt("class_level2_grid_div"); // make sure you have a target HTML element with this id 
          grid.startup(); 

         }); 

      } 

    } 
    } 
    </script> 
    </head>`enter code here` 
    <body> 
    <div id="data_types" data-dojo-type="dijit/form/Select" style="width: 200px;" onchange="onReportTypesSelect()"> 
         <span data-dojo-value="Select"><b>Select</b></span> 
         <span data-dojo-value="class_level"><b>class Level</b></span> 
         <span data-dojo-value="class_level2"><b>class Level</b></span> 
    </div> 
    <div id="class_level_grid_div" style="width: 95%; height: 90%;"> </div> 
    </div> 
    <div id="class_level2_grid_div" style="width: 95%; height: 90%;"> </div> 
    </div> 
    </body> 
    </html> 
+1

Hi @dori naji Спасибо, мужчина, это сработало !!!! Я хотел бы добавить исправление, которое должно быть (class_level_grid) not (class_level_grid_div) при проверке на регистрацию .. if (typeof registry.byId ("class_level_grid")! = "Undefined") { registry.byId ("class_level_grid «) .destroyRecursive(); } Отметить это как ответ .. еще раз спасибо – bhanuj

Смежные вопросы