2015-04-22 9 views
5

लघु संस्करण: कैसे, जावास्क्रिप्ट या JQuery का उपयोग कर, मैं गतिशील रूप से एक डिफ़ॉल्ट मान दे दिया कुछ शर्तों पर मुलाकात कर रहे हैं करने के लिए एक गतिशील रूप से उत्पन्न multiselector बॉक्स के चयनित मूल्य पुन: असाइन करते दूसरे में बदलें (उपयोगकर्ता का चयन करें)?अद्यतन कर रहा है Pentaho-सीडीई में चयनित गतिशील Multiselectors के मान

लांग संस्करण:

मैं multiselectors (राज्य, मेट्रो क्षेत्र (उर्फ एमएसए), काउंटी) गतिशील रूप से एक दूसरे पर निर्भर हैं, ताकि केवल काउंटियों और महानगरीय क्षेत्रों को चुना राज्यों अन्तर्विभाजक में प्रदर्शित किए जाते हैं के तीन स्तर है संबंधित चयनकर्ता।

मेरी समस्या यह है कि यदि मैं मैरीलैंड कहता हूं, तो मैरीलैंड के अंदर एक एमएसए का चयन करता हूं और फिर टेक्सास पर क्लिक करता हूं, मेरी तालिका जो मल्टीइलेक्ट्रेटर फ़िल्टर (पैरामीटरयुक्त एमडीएक्स क्वेरी) क्रैश हो जाती है।

पेंटाहो के कैटलिना.आउट में त्रुटि लॉग द्वारा जाकर, ऐसा लगता है कि एमएसए (मेट्रो एरिया) चयनकर्ता पैरामीटर अपरिभाषित हो जाता है जब एक राज्य जिसमें पहले चयनित एमएसए नहीं होता है।

मैं इसे बनाना चाहता हूं ताकि जब एक नया राज्य या राज्यों का समूह चुना जाता है जिसमें वर्तमान में चयनित एमएसए या काउंटी शामिल नहीं है, तो वे चयनकर्ता डिफ़ॉल्ट ("सभी") मान पर वापस आते हैं। मैं JQuery और जावास्क्रिप्ट नया हूं, इसलिए मुझे जितना संभव हो उतना विस्तार चाहिए, जबकि अभी भी आपके समय पर विचार किया जा रहा है।


अतिरिक्त विवरण, की जरूरत है जहां:

मूल्यों एमएसए (मेट्रो क्षेत्र) राज्य (रों) कि चुने गए हैं पर निर्भर करता है चयनकर्ता परिवर्तन में, और काउंटी चयनकर्ता राज्य और मेट्रो क्षेत्र पर निर्भर है । यह सब एक HTML पृष्ठ पर हो रहा है (पेंटाहो के सीडीई डैशबोर्ड द्वारा उत्पन्न)। प्रत्येक के लिए डेटासोर्स एक पैरामीटरयुक्त SQL क्वेरी है (पेंटाहो द्वारा किया गया)।

जब काउंटी और एमएसए के लिए "सभी" विकल्प चुना जाता है मैं सुरक्षित रूप से राज्य चयन बदल सकते हैं: working

जब काउंटी और एमएसए के लिए "सभी" विकल्प के अलावा कुछ चयनित है मैं नहीं बदल सकते बदल डैशबोर्ड क्रैश होने के बिना राज्य चयन: crashing

डाटा एसक्यूएल से आने वाले एक दो-स्तंभ सरणी, किसी MDX प्रारूपित मूल्य और एक स्पष्ट-पाठ लेबल के साथ, एक सभी मूल्य के साथ MDX माता पिता निर्दिष्ट करने के लिए है 'सभी' मूल्य ।

+0

मुझे नहीं लगता कि यह प्रश्न बहुत व्यापक है। मैं विशेष रूप से एक चीज़ के लिए पूछ रहा हूं: दूसरे में परिवर्तन पर कुछ शर्तों को देखते हुए एक मल्टीइलेक्टर बॉक्स के मूल्य को गतिशील रूप से पुन: असाइन कैसे करें। यह लगभग शुद्ध JQuery है, सभी पेंटाहो और एसक्यूएल सामान सिर्फ संदर्भ है। –

+0

मुझे लगता है कि आप SQL प्रश्न की तरह अपने प्रश्न के अधिकांश संदर्भ को हटा सकते हैं, यह आपके द्वारा पूछे जा रहे jQuery से संबंधित प्रश्न के लिए वास्तव में प्रासंगिक नहीं है। इसके अलावा, आपको वर्तमान jQuery स्रोत कोड दिखाना चाहिए, इस तरह हम यह नहीं देख सकते कि आप क्या गलत कर रहे हैं। – rednaw

+0

@rednaw, यह रगड़ है, पृष्ठ पेंटाहो बीआई उपकरण द्वारा चित्रित किया गया है, लेकिन यह पूर्व में और बाद में निष्पादन और पूर्व और पोस्ट परिवर्तन में अपने स्वयं के jquery या जेएस कथन डालने के माध्यम से अनुकूलन की अनुमति देता है। –

उत्तर

2

आप ज्यादा संदर्भ नहीं देते हैं, तो मैं नहीं आप एक बहुत विशिष्ट जवाब दे सकता है, इसलिए मुझे आशा है कि आप इस से पर्याप्त होगा:

$('.one-input').change(function() { 

    if ($(this).val() == 'something') { 
     $('.other-input').val('default-value'); 
    } 

}); 
+0

धन्यवाद, वास्तव में जो मैं खोज रहा था, वैसे ही, यह निश्चित रूप से मुझे सही दिशा में देखकर भेजा। –

1

यह हल। बहुत सारे कोड पेंटाहो-सीडीई विशिष्ट थे, अर्थात् क्योंकि चयनकर्ता के मूल्य को सीधे बदलने का प्रयास करने के बजाय, मैंने पैरामीटर के लिए श्रोता सेट किया जो चयनकर्ता में चयनकर्ता मूल्य को संग्रहीत करता है और उसे बदल देता है।

जेएस संसाधन के रूप में पेंटाहो-सीडीई में नीचे दिए गए कोड को रखा गया, फिर मेरे सभी घटकों को चुने गए मानों को गतिशील रूप से डिफ़ॉल्ट रूप से अपडेट करने के लिए @ renaw's .change() उत्तर पर एक संस्करण का उपयोग किया गया, बस उनके पहले चुने गए मान नए उपलब्ध विकल्प सेट से गायब हो जाओ।

$(document).ready(function() { 
    // set default value to start with 
    var all_msas = "[Metro Area]"; 
    var all_counties = "[County]"; 
    var all_zips = "[ZIP]"; 
    Dashboards.fireChange("msa_param", all_msas); 
    Dashboards.fireChange("county_param", all_counties); 
    Dashboards.fireChange("zip_param", all_zips); 


    // what's happening on select 
    $("#stateSelectorRow").on("change", function() { 
      Dashboards.fireChange("msa_param", all_msas); 
      Dashboards.fireChange("county_param", all_counties); 
      Dashboards.fireChange("zip_param", all_zips); 
    }); 

    $("#msaSelectorRow").on("change", function() { 
     Dashboards.fireChange("county_param", all_counties); 
     Dashboards.fireChange("zip_param", all_zips); 
    }); 

    $("#countySelectorRow").on("change", function() { 
     Dashboards.fireChange("zip_param", all_zips); 
    }); 

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