2012-03-20 12 views
5

में पहली ड्रॉपडाउन सूची के मूल्य के आधार पर दूसरी और तीसरी ड्रॉपडाउन सूची सक्षम करने के लिए मेरे पास तीन ड्रॉपडाउनलिस्ट हैं। यदि मेरी पहली DropDownList से एक विशिष्ट मान चुना गया है, तो दूसरी ड्रॉपडाउन सूची सक्षम होना चाहिए। उदाहरण, यदि "प्लेयर 3" चुना गया है, तो अन्य दो DropDownList सक्षम होना चाहिए, हालांकि, यदि "प्लेयर 2" चुना जाता है तो अंतिम DropDownList अक्षम होना चाहिए और दूसरा सक्षम होना चाहिए।एमवीसी

मैं इसे आसानी से कैसे कर सकता हूं? मैं पहले एमवीसी 3 ईएफ मॉडल का उपयोग कर रहा हूँ। यह मेरे विचार में मेरे कोड है:

<p>Player</p> 
    <div class="editor-field"> 
     @Html.DropDownListFor(m => m.PlayerName,Model.SubjectTypes, "Choose player" , new { @class = "selectstyle" }) 
     @Html.ValidationMessageFor(model => model.PlayerName) 
    </div> 

    <p>Position</p> 
    <div class="editor-field"> 
     @Html.DropDownListFor(model => model.PositionName, Model.Consultants, "Choose Position", new { @class = "selectstyle" }) 
     @Html.ValidationMessageFor(model => model.ContactPerson) 
    </div> 

    <p>Team</p> 
    <div class="editor-field"> 
     @Html.DropDownListFor(model => model.TeamName, Model.Teams, "Choose Team", new { @class = "selectstyle" }) 
     @Html.ValidationMessageFor(model => model.ContactPerson) 
    </div> 
+0

क्या आपका मतलब है कि मॉडल में किसी खिलाड़ी को चुना गया है या ग्राहक पक्ष पर चुना गया है? यदि यह क्लाइंट साइड है, तो JQuery/जावास्क्रिप्ट का उपयोग करके नीचे दिया गया उत्तर, एकमात्र तरीका है जिससे आप कोई व्यवहार कर सकते हैं। यदि यह सर्वर-साइड पर है, तो आप इसे कुछ if-statement के साथ आसानी से करने में सक्षम होना चाहिए। – Khelvaster

उत्तर

2

आप पहले लटकती की .change() घटना की सदस्यता सकता है और उसके बाद वर्तमान में चयनित मूल्य के आधार पर सक्षम/दूसरों को निष्क्रिय:

$(function() { 
    $('#PlayerName').change(function() { 
     var value = $(this).val(); 
     if (value == 'Player3') { 
      $('#PositionName, #TeamName').removeAttr('disabled'); 
     } else if (value == 'Player2') { 
      $('#PositionName').removeAttr('disabled'); 
      $('#TeamName').attr('disabled', 'disabled'); 
     } 
    }); 
}); 
+0

मैंने वह स्क्रिप्ट बनाई है, लेकिन मेरी स्क्रिप्ट काम नहीं कर रही है। मैंने मोज़िला फ़ायरफ़ॉक्स फ़ायरबग का उपयोग किया, और स्क्रिप्ट लोड हो रही हैं, हालांकि, एक बार जब मैं एक खिलाड़ी चुनता हूं, तो स्क्रिप्ट वास्तव में अक्षम नहीं होने के कारण मेरी अन्य ड्रॉपडाउनलिस्ट को बदलती प्रतीत होती है। –

+0

@ps__, और जब आपने अपनी स्क्रिप्ट को डीबग किया था तो परिवर्तन विधि के अंदर 'मान' चर का मूल्य क्या था? क्या यह 'प्लेयर 3' था? या यह 'प्लेयर 2' था? या शायद यह कुछ और था जो समझाएगा कि कुछ भी क्यों नहीं हुआ। –

+0

ठीक है, ऐसा लगता है कि वास्तव में हमारे आईडी से मूल्य है, यानी प्लेयर 2 में आईडी 2 है। इसलिए मैंने मान को "प्लेयर 2" के बजाय "value == '2" में बदल दिया है। यह मेरा बुरा था। फिर भी सहायता के लिए धन्यवाद! –

3

मैं करूंगा jQuery में निम्नलिखित है:

$('#PlayerName').change(function() 
{ 
    var id = $(this).val() 
    $.ajax({ 
     url: '@Url.Action("GetPositions")', 
     data: 
      { 
       "id": id, 
      }, 
     success: function (data) 
     { 
      $("#positions").html(data); 
     } 
    }); 
} 

तो मैं कार्रवाई नियंत्रक में होगा:

public JsonResult GetPositions(int id) 
{ 
    var positions = Repository.GetPositionsByPlayerId(id); 
    var hmtl = positions.Select(x => new SelectListItem 
    { 
     Value = x.PositionID.ToString(), 
     Text = x.Name 
    }); 
    return new JsonResult { Data = html }; 
} 

यह उस खिलाड़ी से संबंधित सभी पदों के साथ मूल्यों को भर देगा।