2013-02-15 21 views
0
  • 我有一个带有按钮的jsp页面。
  • 点击该按钮,它会动态地创建一个dojo网格。
  • 网格被加载后,我通过网格迭代,如果有特定的值,整个行被选中。
  • 我通过使用下面的代码实现了它,行被选中,但出现错误。
  • 错误: “错误:dojo.data.ItemFileReadStore:无效项的参数”
  • 正在使用dojoX.grid.DataGrid(1.7)

下面是创建动态网格的代码:在网格加载后对焦或选择该行

var ioArgs = { 
      url: "./DynamicDBServlet", 
      content: { TABLE_NAME:tableName,WHERE_CONDN:condtn,COLUMNS:gridColumnName,ACTION:'select'}, 
      handleAs: "json", 
      load: function(response) { 
       //alert(response["items"][0].USER_ID); 
       var tbl = document.getElementById(gridID); 
       //alert(tbl); 
        if(tbl) tbl.parentNode.removeChild(tbl); 
       var gridLayout = []; 
       var key; 
       colmn=gridColumnName.split(','); 
       var i=0; 
       while(i<colmn.length) { 
        if(colmn[i]=="STATUS"){ 
         key = colmn[i]; 
         gridLayout.push({ 
         field: key, 
         name: displayName[i], 
         formatter:function(opvalue){ 
          //alert(opvalue); 
          opvalue = parseInt(opvalue); 
          if(opvalue==1){ 
           return "Executing";} 
          if(opvalue==2){ 
           return "Suspended";} 
          if(opvalue==3){ 
           return "Completed";} 
          if(opvalue==4){ 
           return "Aborted";} 
          if(opvalue==5){ 
           return "Error";} 
          if(opvalue==6){ 
           return "Terminated";}}, 
         width: '200px', 
         editable: false}); 
         i++; 
        }if(colmn[i]=="PRIORITY"){ 
         key = colmn[i]; 
         gridLayout.push({ 
         field: key, 
         name: displayName[i], 
         formatter:function(opvalue){ 
          if(opvalue==1){ 
           return "High";} 
          if(opvalue==8){ 
           return "Normal";} 
          if(opvalue==15){ 
           return "Low";} 
          }, 
         width: '200px', 
         editable: false}); 
         i++; 
        }if(colmn[i]=="PROCESS_METADATYPE"){ 
         key = colmn[i]; 
         gridLayout.push({ 
         field: key, 
         name: displayName[i], 
         formatter:function(opvalue){ 
          if(opvalue==4497){ 
           return "Provisioning Sub Process";} 
          if(opvalue==4496){ 
           return "Provisioning Loop";} 
          if(opvalue==4494){ 
           return "Main Process";} 
          }, 
         width: '200px', 
         editable: false}); 
         i++; 
        }if(colmn[i]=="ORDER_TYPE"){ 
         key = colmn[i]; 
         gridLayout.push({ 
         field: key, 
         name: displayName[i], 
         formatter:function(opvalue){ 
          if(opvalue==4488){ 
           return "Training Order";} 
          }, 
         width: '200px', 
         editable: false}); 
         i++; 
        }else{ 
         key = colmn[i]; 
         gridLayout.push({ 
         field: key, 
         name: displayName[i], 
         width: '200px', 
         editable: false}); 
         i++; 
        } 
       } 
       //alert(gridLayout); 
       var gridStore = new dojo.data.ItemFileWriteStore({ 
        data: response 
       }); 
       var dumm = dijit.byId('dynamicgrid'+tableName); 
       if(dumm) { 
        dumm.destroy(); 
       } 

        var finderResponse = new dojox.grid.DataGrid({ 
         id:"dynamicgrid"+tableName, 
         query: { }, 
         store:gridStore, 
         structure: gridLayout, 
         selectionMode: "single" 
        }, document.createElement("div")); 
        dojo.byId(parentDiv).appendChild(finderResponse.domNode); 
        //var varb=dijit.byId("finderResponseGrid"+tableName); 
        //alert(varb); 
        //varb.layout.setColumnVisibility(0, false); 
        gbshowgridFlag = true; 
        finderResponse.startup(); 
        //dijit.byId('dynamicgridCWPROCESS').focus.setFocusIndex(0); 
        try{ 
        for(var i=0; i < dijit.byId('dynamicgridCWPROCESS').rowCount; i++){ 
         var items = dijit.byId('dynamicgridCWPROCESS').getItem(i); 
         var value=dijit.byId('dynamicgridCWPROCESS').store.getValue(items,"PROCESS_ID"); 
         if(value=="2507"){ 
          dijit.byId('dynamicgridCWPROCESS').selection.setSelected(i,true); 

         } 
         } 
        if(defineDbl){ 
         getProcessgrid(); 
        } 
       }catch(e){ 
        alert(e); 
       } 
       }, 
      error: function(error) { 
       alert("An unexpected error occurred: " + error); 
      } 
    }; 
    var deferred = dojo.xhrPost(ioArgs); 
+0

请提供一个jsfiddle示例,它会产生相同的错误... – 2013-02-15 11:32:23

+0

对不起。这将是困难的。我有'n'个代码。 – Rachel 2013-02-15 11:37:39

+0

这样很难找到问题 – 2013-02-15 11:39:46

回答

0

此代码帮我在网格中选择行:

grid.selection.select(rowIndex); 

你的情况:

finderResponse.selection.select(rowIndex); 

我希望这能解决您的问题。

0
function selectRowByYourOwn(){ 
var row = null; 

// you have to get is some have.. try onSelected='yourOwnFn', on your table tag or your div tag. 
// function yourOwnFn(rowID){ row = rowID;} 

grid.selection.clear(); 
grid.selection.setSelected(row, true); 
grid.render(); 
} 
相关问题