dojo बॉर्डर कॉन्टैनेयर के भीतर डीजीआरआइड का आकार बदलना




dijit.layout dgrid (2)

मेरे पास "लाइव स्प्लिटर" सक्षम के साथ एक सीमा कॉन्टैनेयर के भीतर एक dgrid (Dojo 1.8 का उपयोग करते हुए) है। Dgrid अच्छी तरह से आता है, लेकिन जब मैं बाएं स्तंभ और "अग्रणी" कॉलम (जो कि dgrid के भीतर है) के बीच फाड़नेवाला को स्थानांतरित करता है, तो dgrid ठीक से आकार नहीं करता है हालांकि, अगर मैं खिड़की का आकार बदलता है, तो डीजीडीएड एक उचित आकार में वापस आ जाता है (अर्थात बॉर्डर कॉन्टैनेयर के "अग्रणी" फलक के 100% भरने)

मेरे पास डीजीआरडी सीएसएस में 100% की चौड़ाई है। क्या अलग तरह से मुझे डग्रेड को बताना है कि फाड़नेवाला चाल के बाद इसका आकार ताज़ा करना है?


जैसा कि @ फ़्यूज़िक के उत्तर के लिए टिप्पणियों में बताया गया है, अगर मैं डिजिटराजिस्टिक्स मिक्सिन का उपयोग करता हूं, तो डीग्रीडी ठीक से पुन: आकार लेती है I मेरे पास कुछ अन्य आकार बदलने वाली समस्याएं भी थीं, लेकिन मेरे सीएसएस में तत्व (जैसे 100%) में एक निर्धारित सापेक्ष चौड़ाई होने के साथ उन्हें करना पड़ा। अगर मैं आकार निकालता हूं, जो वैसे भी ContentPanel के लिए आवश्यक नहीं था, तो सभी तत्व ठीक ओके आकार बदलते हैं I सीएसएस को डोजो 1.5 से पूरा किया गया था, जो सीएसएस में सेट साइज़ वाले कंटैंट पैनेल को उसी तरीके से प्रतिक्रिया नहीं करता था।


इस उदाहरण को देखो, मैंने एक और dgrid संबंधित प्रश्न का जवाब दिया: http://jsfiddle.net/phusick/VjJBT/

आप जिस सीएसएस नियम की तलाश कर रहे हैं वह है:

#grid {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    height: auto;
}

संपादित करें: मैंने सोचा कि यह dgrid संस्करण की समस्या हो सकती है, इसलिए मैंने अपने dgrid को नवीनतम संस्करण 0.3.3 में अपडेट कर dgrid और तुम्हारी समस्या के लिए एक परीक्षण बनाया: http://jsfiddle.net/phusick/5mHTS/

ठीक है, यह संस्करणों का मुद्दा नहीं था और दोनों 0.3.1 और 0.3.3 बॉर्डर कॉन्टैनेयर को रीसाइज़ करते समय ठीक काम करता है, लेकिन केवल क्रोम और फ़ायरफ़ॉक्स में। मैंने आईई 9 और ओपेरा 12.10 में इस समस्या को पुन: प्रस्तुत किया:

ग्रिड को ठीक से आकार बदलने के लिए ग्रिड। grid.resize() को प्रारंभ करने की आवश्यकता है, जो grid.resize() 9 / ओपेरा में नहीं होता है, जब grid.resize() का आकार grid.resize() , लेकिन जब आप विंडो का आकार BorderContainer हैं तो हमेशा ऐसा होता है

DijitRegistry इस मुद्दे को हल करता है, क्योंकि लेआउट घटकों, जैसे ContentPane और ContentPane , ContentPane अपने सभी बच्चों पर कॉल का resize() ContentPane resize()

इसलिए उप- DijitRegistry या dojo/aspect ग्रिड के मूल सामग्री ContentPane पर ContentPane grid::resize() और ग्रिड को ContentPane grid::resize() :

aspect.after(contentPane, "resize", function() {
    grid.resize();
});