2010-04-24 28 views
13

क्या कोई यह जानता है कि ग्रिड लोड होने पर स्टॉक jqGrid "लोड हो रहा है ..." ओवरले को ट्रिगर कैसे करें? मुझे पता है कि मैं बिना किसी प्रयास के एक jquery प्लगइन का उपयोग कर सकता हूं लेकिन मैं अपने आवेदन के लुक-एन-महसूस को रखने में सक्षम होना चाहता हूं जो पहले से ही jqGrid में उपयोग किया गया है। आप DisplayLoadingMessage() समारोह की तरह कुछ के लिए खोज रहे हैं, तोjqGrid ट्रिगर "लोड हो रहा है ..." ओवरले

jqGrid display default "loading" message when updating a table/on custom update

  • एन 8

उत्तर

17

:

The I पाया है बात बंद कर देता है यह है। यह jqGrid में मौजूद नहीं है। आप केवल loaduiको jqGrid का विकल्प (डिफ़ॉल्ट) सक्षम, अक्षम या ब्लॉक सेट कर सकते हैं। मैं व्यक्तिगत रूप से ब्लॉक पसंद करता हूं। (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options देखें)। लेकिन मुझे लगता है कि यह वही नहीं है जो आप चाहते थे।

एकमात्र चीज जो आप कर सकते हैं, यदि आपको jqGrid से "लोड हो रहा है ..." संदेश पसंद है, तो उसे वही बनाना है। मैं यहां बताऊंगा कि jqGrid इस संदेश को प्रदर्शित करने के लिए क्या करता है: दो छिपे हुए divs बनाए जाएंगे। आप आईडी = सूची के साथ एक ग्रिड है, इस divs निम्नलिखित तरह दिखेगा:

<div style="display: none" id="lui_list" 
    class="ui-widget-overlay jqgrid-overlay"></div> 
<div style="display: none" id="load_list" 
    class="loading ui-state-default ui-state-active">Loading...</div> 

जहां पाठ "लोड हो रहा है ..." या "Lädt ..." (जर्मन में) $.jgrid.defaults.loadtext से आता है। Divs की आईडी "lui_" या "load_" उपसर्ग और ग्रिड आईडी ("सूची") से बनाई जाएगी। AJAX अनुरोध भेजने से पहले jqGrid इस divs में से एक या दो दृश्यमान बनाता है। लोडुई विकल्प सक्षम करने पर यह jQuery.show() फ़ंक्शन दूसरे div (id = "load_list") के लिए कॉल करता है। यदि लोडुई विकल्प ब्लॉक है, हालांकि, दोनों divs (id = "lui_list" और id = "load_list") .show() फ़ंक्शन के संबंध में दिखाए जाएंगे। AJAX अनुरोध के अंत के बाद .hide() jQuery फ़ंक्शन को एक या दो divs के लिए बुलाया जाएगा। यह सब कुछ है

आपको ui.jqgrid.css या jquery-ui-1.8.custom.css में सभी सीएसएस कक्षाओं की परिभाषा मिल जाएगी।

अब आपके पास jqGrid "लोड हो रहा है ..." संदेश पुन: उत्पन्न करने के लिए पर्याप्त जानकारी है, लेकिन अगर मैं आप थे तो मैं एक और बार सोचूंगा कि आप वास्तव में ऐसा करना चाहते हैं या jQuery blockUI plugin आपके लक्ष्यों के लिए बेहतर है।

+0

विस्तृत रेस के लिए धन्यवाद ponse! वाह, आपके द्वारा प्रदान किए गए विकल्प लिंक वास्तव में मुझे jqGrid जानवर के अंडरबली तक पहुंच प्रदान करते हैं, जो दुख की बात है, मैं अब तक पूरी तरह से अनजान था। मैंने jqGrid प्रलेखन को थोड़ा सा अंतर्ज्ञानी और अनुसरण करने में कठोर पाया है, लेकिन मैं इसे गर्म कर रहा हूं। इसमें एक सीखने की अवस्था शामिल है। मैं यह देखने के लिए "load_list" div के साथ खेलूँगा यह देखने के लिए कि क्या मैं इसे अच्छा खेल सकता हूं। मैं निर्धारित के रूप में jQuery ब्लॉकयूआई का सहारा ले सकता हूं। लेकिन कम से कम मुझे लगता है कि मेरे पास विकल्प हैं (अब कोई इरादा नहीं है)। – gurun8

+0

मुझे यह पता लगाने में काफी समय नहीं लगा कि मुझे अपना लक्ष्य प्राप्त करने के लिए जो कुछ करना है वह निम्नलिखित था: $ ("# load_list")।(); $ ("# load_list")। सीएसएस ("जेड-इंडेक्स", 1000); और $ ("# load_list")। छुपाएं(); $ ("# load_list")। सीएसएस ("जेड-इंडेक्स", 101); मुझे अपने कस्टम संवाद बॉक्स पर div को प्रदर्शित करने के लिए जेड-इंडेक्स को बदलना और पुन: स्थापित करना पड़ा। बस सोचा कि मैं साझा करूंगा। – gurun8

1

ओवरराइड करने की शैली [.ui-jqgrid .loading] है।

+0

यह केवल ग्रिड के बीच में "लोड हो रहा है ..." पर लागू होता है, हालांकि विंडो ओवरले नहीं है जो – Jimbo

0

आप $ ("# load _") कॉल कर सकते हैं। दिखाएं() और .hide() आपके ग्रिड की आईडी कहां है।

7

मैं

 $('.loading').show(); 
     $('.loading').hide(); 

यह ठीक काम करता है का उपयोग किसी भी नए divs

2

मैं सिर्फ में रेखा के नीचे रखा onSelectRow JQ ग्रिड के घटना यह काम किया बनाने के बिना।

$ ('लोडिंग')।प्रदर्शन();

0

यह $ ('div.loading') से चिंतित है। शो(); यह भी उपयोगी भी अन्य घटकों

$('#editDiv').dialog({ 
      modal : true, 
      width : 'auto', 
      height : 'auto', 
      buttons : { 
       Ok : function() { 
        //Call Action to read wo and 
        **$('div.loading').show();** 

        var status = call(...) 
        if(status){ 
         $.ajax({ 
          type : "POST", 
          url : "./test", 
          data : { 
           ... 
          }, 
          async : false, 
          success : function(data) { 

           retVal = true; 
          }, 
          error : function(xhr, status) { 


           retVal = false; 
          } 
         }); 
        } 
        if (retVal == true) { 
         retVal = true; 
         $(this).dialog('close'); 
        } 
        **$('div.loading').hide();** 
       }, 
       Cancel : function() { 
        retVal = false; 
        $(this).dialog('close'); 
       } 

      } 
     }); 
0

@Oleg ने उल्लेख किया एक ajax आधार अनुप्रयोगों के विकास के दौरान अच्छा सुविधाओं के बहुत सारे है। इसके साथ आप पूरे यूआई या एक विशिष्ट तत्व element Block

बुलाया jqGrid आप के लिए ब्लॉक कर सकते हैं एक div (sampleGrid) में ग्रिड डाल सकते हैं और फिर ग्रिड ब्लॉक के रूप में:

$.extend($.jgrid.defaults, { 
    ajaxGridOptions : { 
     beforeSend: function(xhr) { 
      $("#sampleGrid").block(); 
     }, 
     complete: function(xhr) { 
      $("#sampleGrid").unblock(); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      $("#sampleGrid").unblock(); 
     } 
    } 
}); 
3

सरल, यह दिखाने के लिए :

$("#myGrid").closest(".ui-jqgrid").find('.loading').show(); 

तो यह फिर से छिपाने के लिए

$("#myGrid").closest(".ui-jqgrid").find('.loading').hide(); 
+1

लोड करते समय ग्रिड तक पहुंच को अवरुद्ध करता है, कृपया पुराने धागे पर पोस्ट करते समय ध्यान दें, जिसमें कई अन्य प्रतिक्रियाएं हैं, खासकर जब उनमें से एक स्वीकार किया जाता है। आपको यह बताने की जरूरत है कि आपका उत्तर सभी मौजूदा लोगों की तुलना में बेहतर क्यों है। – APC

+0

धन्यवाद !! यह उत्तर अन्य लोगों की तुलना में बेहतर है क्योंकि (1) यह बहुत छोटा है, और (2) यह एक ही पृष्ठ पर दो ग्रिड के मामले को संभालता है। –

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