2011-04-16 11 views
8

मैं वेबमैट्रिक्स, रेज़र सिंटैक्स और cshtml फ़ाइल का उपयोग कर रहा हूं।किसी चयनित तत्व की चयनित संपत्ति का मान कैसे सेट करें

मेरे पास डेटाबेस रिकॉर्ड के लिए एक "संपादन" पृष्ठ है जिसमें एक चयन बॉक्स (id = "selStatus") शामिल है। मैं वर्तमान रिकॉर्ड के मूल्य के आधार पर चुनिंदा बॉक्स के "चयनित" मान को गतिशील रूप से सेट करने का प्रयास कर रहा हूं।

मेरे पास स्थानीय वैर में वर्तमान मूल्य या इसकी अनुक्रमणिका है लेकिन मैं इस मान को वापस चयन में निर्दिष्ट नहीं कर सकता।

if (currentStatus=="Completed"){ 
    selStatus.options[1].selected=true; 
} 

RES = त्रुटि: वर्तमान संदर्भ में 'selStatus' नाम मौजूद नहीं है।

मुझे कुछ स्पष्ट याद आ रही है लेकिन इसे प्राप्त नहीं हो रहा है। किसी भी विचार की सराहना की। धन्यवाद

उत्तर

4

जावास्क्रिप्ट का उपयोग करने के अलावा आप ड्रॉपडाउन बनाते समय चयनित आइटम सेट कर सकते हैं।

यह तब काम करेगा जब आपके पास गतिशील रूप से उत्पन्न ड्रॉपडाउन हो। यदि आपका ड्रॉपडाउन स्थिर है तो आपको जावास्क्रिप्ट का उपयोग करने की आवश्यकता है।

पहले डेटा कि लटकती भर जाएगा बनाने के लिए:

var selectQ = "SELECT StatusName, StatusID FROM MyStatusTable"; 
List<SelectListItem> statusdropdownlistdata = new List<SelectListItem>(); 
bool isSelected = false; 
foreach(var item in db.Query(selectQ)){ 
    isSelected = false; 
    if(item.StatusName == "Completed"){ 
     isSelected = true; 
    } 
    statusdropdownlistdata.Add(new SelectList Item 
    { 
     Text = item.StatusName, 
     Value = item.StatusID.ToString(), 
     Selected = isSelected 
    }); 
} 

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

इसके बाद, अपने cshtml का HTML भाग से जोड़ें:

@Html.DropDownList("StatusTypes", statusdropdownlistdata) 

ऊपर किसी आईडी से ड्रॉपडाउन सूची प्रस्तुत करना होगा = "StatusTypes" और चयनित आइटम के साथ अपने लटकती डेटा।

एचटीएमएल देखें। ड्रोपडाउन सूची और आप शायद इसे करने के लिए अन्य विकल्प और तरीके ढूंढ पाएंगे।

  • मुझे यकीन है कि अगर यह कोड काम करेंगे नहीं कर रहा हूँ, क्योंकि मैं यह लिख रहा हूँ लेआउट साइट में स्मृति
+0

'System.Web.Mvc.HtmlHelper ' नहीं लागू विधि नामक 'DropDownList' लेकिन उस नाम से एक विस्तार विधि प्रतीत होता है। एक्सटेंशन विधियों को गतिशील रूप से प्रेषित नहीं किया जा सकता है। गतिशील तर्कों को कास्ट करने या एक्सटेंशन विधि वाक्यविन्यास के बिना एक्सटेंशन विधि को कॉल करने पर विचार करें। –

5

द्वारा:

@{ 
    if (!IsPost) 
    { 
     PageData["accountType"] = 0; /* default value */ 
    } 
} 
<html> 
    <head></head> 
    <body> 
     <form action="@Href("~/")" method="post"> 
      <select name="accountType"> 
       <option value="0"@(PageData["accountType"] == 0 ? " selected" : "")>Standard</option> 
       <option value="1"@(PageData["accountType"] == 1 ? " selected" : "")>Golden</option> 
       <option value="2"@(PageData["accountType"] == 2 ? " selected" : "")>Ultimate</option> 
      </select> 
     </form> 
    </body> 
<html> 

और अन्य साइट पर आप कर सकते हैं

var accountType = Convert.ToInt32(Request["accountType"]); 

की तरह कुछ के साथ पहुँच इसे बाद में अपनी आवश्यकताओं के लिए यह सेट

साथ
PageData["accountType"] = (required int value); 
19

आप विकल्पों में से एक स्थिर सूची है, उदाहरण के लिए, वैवाहिक स्थिति के लिए, आप इसे अधिक स्पष्ट (हम में से कुछ के लिए) रख सकते इस तरह:

<select> 
    <option value="Single" @(marStat == "Single" ? "selected" : "")>Single</option> 
    <option value="Married" @(marStat == "Married" ? "selected" : "")>Married</option> 
    <option value="Divorced" @(marStat == "Divorced" ? "selected" : "")>Divorced</option> 
    <option value="Widowed" @(marStat == "Widowed" ? "selected" : "")>Widowed</option> 
</select> 

क्या करता है यह है कि अगर आपके रेज़र वैरिएबल मार्स्टैट में जो डेटा आपने पुनर्प्राप्त किया है वह उस स्थिति में स्ट्रिंग से मेल खाता है, यह HTML में "चयनित" प्रस्तुत करता है। यह "ब्रूट" शैली का थोड़ा सा है लेकिन मेरा मानना ​​है कि यह बहुत पठनीय है।

0

इसे भी जोड़ने के लिए अच्छा लगा - मैंने यह कैसे किया।आप नियंत्रक के साथ व्यूबैग को मान भी पास कर सकते हैं और इसे पकड़ सकते हैं और तुलना को तुलना में बना सकते हैं। यहाँ दृश्य मैं ViewBag करने के लिए मान पास में -

ViewBag.degreeLevel = userInfo.educationlevel;: नीचे देखें फिर

(उपयोगकर्ता की जानकारी सिर्फ अपनी वस्तु है), मैं ध्यान में रखते हुए तुलना करने के लिए, नीचे की तरह: enter image description here

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