2010-12-15 4 views
6

जब मैं सच (gridview: सच है) करने के लिए gridview सेट हमारे jqGrid में jqGrid के प्रदर्शन, afterInsertRow की तरह विधि को बढ़ाने के लिए, या अन्य समान तरीकों को निष्पादित नहीं किया गया है। के बाद मेरी jgGrid का कोड है:afterInsertRow: समारोह (आईडीएस) विधि को क्रियान्वित नहीं किया गया है जब मैं gridview का उपयोग करें: सच

afterInsertRow : function(ids) { // shows custom tooltip 
    var customToolTip = jQuery("#displaylistGrid").getCell(ids,'ds_name') + " -- " + 
         jQuery("#displaylistGrid").getCell(ids,'hidden4') ; 
    $("#displaylistGrid").setCell(ids,'ds_name', '','',{title:customToolTip}); 
}, 

पूर्ववर्ती कोड अनुकूलित टूल टिप को दिखाने के लिए प्रयोग किया जाता है:

jQuery("#displaylistGrid").jqGrid({ 
    url: contextRoot + '/StandardProxy/displayListService?userRole='+ 
     userRole+'&userName='+userName+'&userId='+userId+ 
     '&duration='+displayDuration+'&wicNo='+wicNo+ 
     '&displayName='+dlDisplayName+'&displayNameArr='+displayNameArr+ 
     '&pointValue='+pValue+'&locationId='+locId+'&locationCode='+ 
     locCode+'&serviceType=forecast', 
    datatype: 'json', 
    colNames: ["CM Name", "Display ", "Loc. Pt.","Max. Ben." ,"Display Name", 
       "Items w/Fcst", "Units", "Sales $", "Profit $", "GP%", "Units", 
       "Sales $", "Profit $", "GP%","Hidden","Hidden1","Hidden2", 
       "Start Date and End Date", "Hidden4"], 
    colModel: [ 
     { name: "cm_name",  index: "cm_name",  sorttype: "text", width: 120, 
      resizable: true }, 
     { name: "ds_location", index: "ds_location", sorttype: "text", width: 120, 
      resizable: true }, 
     { name: "ds_symbol", index: "ds_symbol", sorttype: "text", width: 50, 
      align: "center",  resizable: true }, 
     { name: "ds_benchMark", index: "ds_benchMark",sorttype: "text", width: 50, 
      align: "center",  resizable: true }, 
     { name: "ds_name",  index: "ds_name",  sorttype: "text", width: 230, 
      resizable: true }, 
     { name: "ds_ItemFrcst", index: "ds_ItemFrcst",sorttype: "int", width: 60, 
      align: "center",  resizable: true, 
      unformat: addDemoninatorSortingFormatter }, 
     { name:"ds_units_promo",index:"ds_units_promo",sorttype:"float",width: 85, 
      align: "right",  unformat : spaceFormatter }, 
     { name:"ds_sales_promo",index:"ds_sales_promo",sorttype:"float",width: 95, 
      align: "right",  unformat : spaceFormatter }, 
     { name: "displaylistGrid_ds_profit_promo", 
      index: "displaylistGrid_ds_profit_promo", 
      sorttype: "float", width: 95,    align: "right", 
      unformat : spaceFormatter }, 
     { name:"ds_gp_pct_promo",index:"ds_gp_pct_promo",sorttype:"int",width: 50, 
      align: "right",  unformat : spaceFormatter }, 
     { name: "ds_units_per_store_week", 
      index: "ds_units_per_store_week",   sorttype:"float",width: 85, 
      align: "right",  unformat : spaceFormatter }, 
     { name: "ds_sales_per_store_week", 
      index: "ds_sales_per_store_week", 
      sorttype: "float", width: 90,    align: "right", 
      unformat : spaceFormatter }, 
     { name: "ds_profit_per_store_week", 
      index: "ds_profit_per_store_week", 
      sorttype: "float", width: 90,    align: "right", 
      unformat : spaceFormatter }, 
     { name: "ds_gp_pct_per_store_week", 
      index: "ds_gp_pct_per_store_week", 
      sorttype: "float", width: 40,    align: "right", 
      unformat : spaceFormatter }, 
     { name: "hidden1",  index: "hidden1",  sorttype: "int", 
      align: "center",  hidden: true }, 
     { name: "hidden2",  index: "hidden2",  sorttype: "text", 
      align: "center",  hidden: true }, 
     { name: "hidden3",  index: "hidden3",  sorttype: "int", 
      align: "center",  hidden: true }, 
     { name:"forecast_dates",index:"forecast_dates",sorttype: "text", 
      align: "center",  hidden: true }, 
     { name: "hidden4",  index: "hidden4",  sorttype: "text", 
      align: "center",  hidden: false } 
    ], 
    onSelectRow: function(ids){ 
     //checkDisplayDetail(); 
     //setDefaultValuesToTheSortingParams(); 
     var dropDownVal = document.getElementById("displayDetailSelection").value; 
     var subTabName = document.getElementById("detailSubTabName").value; 
     if(subTabName=="Active") 
      dropDownVal = document.getElementById("displayDetailActiveSelection").value; 
     reLoadDisplayDetailData(ids,'forecast',dropDownVal,subTabName); 
    }, 
    afterInsertRow : function(ids) { // shows custom tooltip 
     var customToolTip = jQuery("#displaylistGrid").getCell(ids,'ds_name') + 
        " -- " + jQuery("#displaylistGrid").getCell(ids,'hidden4'); 
     $("#displaylistGrid").setCell(ids,'ds_name', '','',{title:customToolTip}); 
    }, 
    gridComplete : function(){ 
     if($("#isForecastedSalesGridLoaded").val()=="no"){ 
      $("#jqgh_displaylistGrid_ds_profit_promo").click(); 
     } 
     else{ 
      $("#isForecastedSalesGridLoaded").val("no"); 
     } 
    }, 
    onSortCol : function(){ 
     $("#isForecastedSalesGridLoaded").val("yes"); 
    }, 
    width: 983, 
    rowNum: 999, 
    height: eval(heightOfDispListGrid()+7), 
    toolbar: [true, "top"], 
    viewrecords: true, 
    treeIcons: {leaf: "ui-icon-document-b"}, 
    treeGrid: true, 
    treeGridModel: 'nested', 
    ExpandColumn : 'Description', 
    ExpandColClick: true, 
    loadonce:false, 
    refresh : true, 
    shrinkToFit: true, 
    gridview:true,   
    sortorder:"asc", 
    sortname:"displaylistGrid_ds_profit_promo" 
}); 

बाद afterInsertRow विधि का कोड है। कृपया मुझे सुझाव दें कि मैं क्या गलत कर रहा हूं।

कृपया मेरी मदद

धन्यवाद, DISMGMT

उत्तर

4

gridview:true के उपयोग की भावना पीछा कर रहा है। "ग्रिडव्यू" मोड में सबसे ग्रिड युक्त स्ट्रिंग के रूप में बनाया जाएगा। प्रत्येक ग्रिड पंक्ति के लिए HTML मार्कअप के साथ बिल्कुल एक सबस्ट्रिंग्स बनाने के लिए, एक join('') के संबंध में स्ट्रिंग सरणी से एक स्ट्रिंग बनाता है और केवल तभी ग्रिड का प्रतिनिधित्व करने वाला एक DOM ऑब्जेक्ट बनाता है। यह न केवल लंबे तारों (join('')) के साथ बेहतर काम करने के कारण प्रदर्शन में सुधार करता है, लेकिन डीओएम ऑब्जेक्ट्स के साथ काम करने को कम करने के कारण जो तारों के साथ काम करने के रूप में बहुत धीमी है।

तो मैं आपको सलाह देता हूं कि आप afterInsertRow का उपयोग न करें। इसके बजाय इस बात का आप सफलतापूर्वक निम्न कोड

var myGrid = jQuery("#displaylistGrid"); 
var ids = myGrid.jqGrid('getDataIDs'); 
for (var i = 0; i < ids.length; i++) { 
    var id=ids[i]; 
    var customToolTip = myGrid.jqGrid('getCell',ids,'ds_name') + " -- " + 
         myGrid.jqGrid('getCell',ids,'hidden4'); 
    myGrid.jqGrid('setCell',ids,'ds_name', '','',{title:customToolTip}); 
} 

जो आप gridComplete या loadComplete में शामिल कर सकते हैं के संबंध के साथ भी ऐसा कर सकते हैं।

कॉलम ds_name कॉलम के लिए custom formatter का उपयोग करके सबसे अच्छा प्रदर्शन आप संग्रहित करेंगे जहां आप कस्टम टूलटिप सेट करना चाहते हैं। कार्यान्वयन बहुत आसान है क्योंकि आपका कस्टम फॉर्मेटर rowObject पैरामीटर सर्वर डेटा की पंक्ति को उसी रूप में प्राप्त करेगा जैसे कि यह सर्वर से प्राप्त होगा (सरणी के रूप में या ऑब्जेक्ट के रूप में)। ठीक से hidden4 तुरंत पहुंच योग्य होगा (मैं आपको अधिक जानकारी के लिए this answer पढ़ने की सलाह देता हूं)।

अद्यतन: उत्तर बहुत पुराना है। jqGrid कई वैकल्पिक कार्यान्वयन तरीकों को प्रदान करता है जो प्रदर्शन बिंदु से काफी बेहतर हैं। पृष्ठ पर प्रत्येक परिवर्तन ब्राउज़र reflow का पालन करता है। तो लूप में setCell का उपयोग प्रभावी नहीं है। cellattr या rowattr का उपयोग करना और gridview: true का उपयोग जारी रखने के लिए the answer में कौन से फायदे वर्णित हैं।

The answer सेल setCell वर्तमान जवाब में इस्तेमाल के बजाय cellattr के प्रयोग पर title सेट करने के लिए बहुत प्रभावी तरीका दर्शाता है। Another answercellattr का उपयोग करने के लिए एक और आम उदाहरण प्रदान करता है। ग्रिड की पंक्तियों के गुण सेट करने के लिए rowattr कॉलबैक का उपयोग कर सकते हैं। कोड उदाहरण के लिए the answer देखें।

2

Note: this event does not fire if gridview option is set to true

मैं इसी तरह की समस्या थी, jqgrid का विकी पढ़ने के बाद मैं किसी और को एक ही समस्या का सामना करना पड़ता है, तो दस्तावेज़ के लिए लिंक देने के लिए सोचा।

संबंधित मुद्दे