2010-08-03 12 views
7

मैं इस कोड को कैसे अनुकूलित कर सकता हूं? मुझे केस स्टेटमेंट नहीं है, क्या कोई तरीका है कि मैं इस कोड को बेहतर बना सकता हूं?मैं इस कोड को और अधिक अनुकूलित कैसे कर सकता हूं

protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower(); 

    switch (selVal) 
    { 
     case "date": 
      pnlDate.Visible = true; 
      pnlSubject.Visible = false; 
      pnlofficer.Visible = false; 
      pnlCIA.Visible = false; 
      pnlMedia.Visible = false; 
      pnlStatus.Visible = false;      
      break; 

     case "subject": 
      pnlDate.Visible = false; 
      pnlSubject.Visible = true; 
      pnlofficer.Visible = false; 
      pnlCIA.Visible = false; 
      pnlMedia.Visible = false; 
      pnlStatus.Visible = false; 
      break; 

     case "officer": 
      pnlDate.Visible = false; 
      pnlSubject.Visible = false; 
      pnlofficer.Visible = true; 
      pnlCIA.Visible = false; 
      pnlMedia.Visible = false; 
      pnlStatus.Visible = false; 
      break; 

     case "status": 
      pnlDate.Visible = false; 
      pnlSubject.Visible = false; 
      pnlofficer.Visible = false; 
      pnlCIA.Visible = false; 
      pnlMedia.Visible = false; 
      pnlStatus.Visible = true; 
      break; 

     default: 
      pnlDate.Visible = false; 
      pnlSubject.Visible = false; 
      pnlofficer.Visible = false; 
      pnlCIA.Visible = false; 
      pnlMedia.Visible = false; 
      pnlStatus.Visible = false; 
      break; 
    } 
} 

उत्तर

33

पर्याप्त आसान है। आप केवल कभी मामले विकल्प के आधार पर एक आइटम दृश्यमान बना रहे हैं, इस प्रकार है तो बस दृश्यता सेट:

pnlDate.Visible = (selVal == "date"); 
pnlSubject.Visible = (selVal == "subject"); 
pnlofficer.Visible = (selVal == "officer"); 
pnlCIA.Visible = false; 
pnlMedia.Visible = false; 
pnlStatus.Visible = (selVal == "status");  

यह visible = false; के लिए सब कुछ करना और फिर केवल आइटम आप की जरूरत दिखा के रूप में इस इसमें से बेहतर है सभी वास्तविक दृश्यता सेटिंग के लिए कोड की केवल 6 पंक्तियों में।

+3

मैं शायद इसे और अधिक पठनीय बनाने के लिए parantheses जोड़ना होगा। –

+0

+1: सरल और स्पष्ट – RedFilter

+0

@ray dey - परी नोफ। किया हुआ। – GenericTypeTea

5
protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e) 
      { 
       string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower(); 
         pnlDate.Visible = false; 
         pnlSubject.Visible = false; 
         pnlofficer.Visible = false; 
         pnlCIA.Visible = false; 
         pnlMedia.Visible = false; 
         pnlStatus.Visible = false; 
       switch (selVal) 
       { 
        case "date": 
         pnlDate.Visible = true;      
         break; 

        case "subject": 
         pnlSubject.Visible = true; 
         break; 

        case "officer": 
         pnlofficer.Visible = true; 
         break; 
        case "status": 
         pnlStatus.Visible = true; 
         break; 
       } 

      } 
10

एक और तरीका है:

// set everything to false 
Dictionary<string, type> d = new Dictionary<string, type>() 
{ 
    {"date", pnlDate}, 
    {"subject", plnSubject}, 
    {"officer", plnOfficer}, 
    {"status", plnStatus} 
}; 

d[selVal].Visible = true; 
+0

+1। बहुत अच्छा .. – Steven

+0

+1 अच्छा विचार ... –

+1

डाउनवोट के साथ क्या है? मुझे पता है कि कोड * बिल्कुल * मूल चीज़ जैसा ही नहीं करता है; यह सिर्फ विचार दिखाने के लिए है। – NullUserException

3

आप ऐसा कर सकता है:

protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e) { 
    string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower(); 

    pnlDate.Visible = (selVal == "date"); 
    pnlSubject.Visible = (selVal == "subject"); 
    pnlofficer.Visible = (selVal == "officer"); 
    pnlCIA.Visible = (selVal == "cia"); 
    pnlMedia.Visible = (selVal == "media"); 
    pnlStatus.Visible = (selVal == "status"); 
} 

या यह एक है, जबकि कम पठनीय, ज्यादा सही होगा:

protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e) { 
    string selVal = ddlFilterResultBy.SelectedValue.ToString(); 

    pnlDate.Visible = String.Equals(selVal, "date", StringComparison.OrdinalIgnoreCase); 
    pnlSubject.Visible = String.Equals(selVal, "subject", StringComparison.OrdinalIgnoreCase); 
    pnlofficer.Visible = String.Equals(selVal, "officer", StringComparison.OrdinalIgnoreCase); 
    pnlCIA.Visible = String.Equals(selVal, "cia", StringComparison.OrdinalIgnoreCase); 
    pnlMedia.Visible = String.Equals(selVal, "media", StringComparison.OrdinalIgnoreCase); 
    pnlStatus.Visible = String.Equals(selVal, "status", StringComparison.OrdinalIgnoreCase); 
} 
+0

+1 धन्यवाद ....... –

2

वहाँ अनुकूलन और रीडा में सुधार के बीच एक अंतर है साख। तो मुझे लगता है कि आप पठनीयता को बेहतर बनाने की सोच रहे हैं क्योंकि ऑप्टिमाइज़ेशन की वास्तव में आवश्यकता नहीं है। यहां कोई अलगाव नहीं है जिसे आप इसे एक महत्वपूर्ण समय से तेज़ी से बनाने के लिए ट्यून कर सकते हैं।

उत्तर 1 और 2 पठनीयता

0

में सुधार लाने की मेरी पसंद हो जाएगा मैं तुम्हें एक TabControl यहाँ की जरूरत है ..

बस टैब को छिपाने अगर आप उन पसंद नहीं है, और के माध्यम से पेज सूचकांक कोड।

लाभ यह है कि आप डिज़ाइनटाइम पर जीयूआई को संपादित और देखने में सक्षम होंगे।

इसे बनाए रखना बहुत आसान होगा।

+0

मैं div के साथ jquery का उपयोग करता हूं लेकिन मुझे समस्याएं आ रही हैं, आप यहां पोस्ट किए गए प्रश्न को देख सकते हैं http://stackoverflow.com/questions/3367166/jquery-div-disappears-on- पोस्टबैक और मैं jquery/div का उपयोग करने के विचार को छोड़ देता हूं –

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

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