मैं आपके कोड को पुन: सक्रिय करने की अनुशंसा करता हूं जैसे कि सभी सामान्य जेएस तर्क एक ही स्थान पर संग्रहीत किया जाता है, न कि प्रत्येक उपयोगकर्ता नियंत्रण में। यह आपके पृष्ठ के आकार को एक अच्छे मार्जिन से कम कर देगा।
आप UserControls के बीच अंतर करने के लिए सामान्य जेएस विधि (ओं) में UserControl की आईडी में पास कर सकते हैं।
अपने 'UserControl' चर के दायरे को सीमित करने के मुद्दे के लिए, आप अपने UserControl- विशिष्ट मान को रखने के लिए किसी प्रकार की कुंजी/मान संरचना को स्टोर कर सकते हैं - कुंजी UserControl क्लाइंट आईडी होगी, और मान होगा वे चर जो आप रुचि रखते हैं।
उदाहरण के लिए:
var UCFlags = new Object();
//set the flag for UserControl1:
UCFlags["UC1"] = true;
//set the flag for UserControl2:
UCFlags["UC2"] = false;
उन तक पहुँचने के लिए, आप बस UCFlags सरणी में UserControl के ClientID पारित:
myFlag = UCFlags["UC1"];
सर्वर साइड पर, आप लगातार जगह ले सकता है तार "UC1" या "UC2"
<%= this.ClientID %>
इस तरह के साथ:
+०१२३५१६४१०६
myFlag = UCFlags["<%= this.ClientID %>"];
आप अभी भी <% = this.ClientID%> सिंटैक्स का उपयोग कर सकते हैं भले ही जेएस का बड़ा हिस्सा एक अलग फ़ाइल में हो; बस जेएस फ़ाइल को एम्बेड करने के लिए कॉल से पहले
UCFlags["<%= this.ClientID %>"] = value;
सेट करें।
स्रोत
2009-02-18 18:14:34
रयान - मेरे पास पृष्ठ पर उपयोगकर्ता नियंत्रण की संख्या हो सकती है। इसलिए, मैं निश्चित रूप से यूसीफ्लैग सरणी नहीं बना सकता। यूसीएफएलएजी ["यूसी 1"] = सत्य; यूसीएफएलएजी ["यूसी 2"] = झूठा; .. .. .. यूसीएफएलएजी ["यूसीएन"] = झूठा; –
@ बॉब: मैं समझता हूं, लेकिन इस विधि के साथ आपको यह जानने की आवश्यकता नहीं है कि कितने और कितने यूसी हैं - बस यूसीएफएलएजी कह रहे हैं ["<% = this.ClientID%>"] = सत्य एक संपत्ति तैयार करेगा (डॉट क्लाइंट आईडी) UCFlags ऑब्जेक्ट पर, और 'true' मान को प्रारंभ करें। –
आह, मुझे लगता है कि आप जावास्क्रिप्ट में हैश टेबल का उपयोग कर रहे हैं। यह पहली बार मैंने देखा एक सरणी की तरह लग रहा था :) धन्यवाद –