2013-06-10 10 views
6

मेरे पास विभिन्न पंक्तियों वाली एक तालिका है और प्रत्येक पंक्ति एक आईडी से मेल खाती है। प्रत्येक पंक्ति के लिए, मेरे पास EDIT विकल्प है जो चयनित होने पर उपयोगकर्ता को Edit.chtml 'फ़ील्ड में उस आईडी से संबंधित डिफ़ॉल्ट मानों को देखने में सक्षम होना चाहिए और वहां डिफ़ॉल्ट मानों को मिटाकर और नए में टाइप करके इसे अपडेट करके अपडेट किया जाना चाहिए। प्रवेश और इसे बचाओ।Html.dropdownlist ड्रॉपडाउन फ़ील्ड में डिफ़ॉल्ट/चयनित मान प्रदर्शित नहीं करता

'Edit.chtml' में, मैं "प्रबंधक" है कि मैं जहां संपादित आपरेशन से चयन किया जाता है पंक्ति के आईडी के साथ संगत प्रदर्शित डिफ़ॉल्ट/चयनित मान के साथ नामों की एक dropdownlist के साथ पॉप्युलेट करने के लिए कोई फ़ील्ड टेबल। मैं व्यूबैग का उपयोग कर रहा हूं लेकिन मेरी समस्या यह है कि ड्रॉपडाउन सूची हमेशा सूची में पहली आइटम प्रदर्शित करती है, न कि चयनित मान। कृपया नीचे दिए गए कोड को देखें।

Controller: 
// 
     // GET: /ManagersNAMES/Edit/5 

     public ActionResult Edit(int id) 
     { 
      using (var db = new InpEntities()) 
      { 
       var list_managers = (from x in db.TABLE_MANAGERS 
             select new TABLE_MANAGERSDTO 
             { 
              ID = x.ID, 
              NAME = x.NAME, 
             }).OrderBy(w => w.NAME).ToList(); 

       ViewBag.managers = new SelectList(list_managers, "ID", "NAME", id); 

       return View(); 
      } 
     } 

     public class TABLE_MANAGERSDTO 
     { 
      public string NAME { get; set; } 
      public int ID { get; set; } 
     } 

     // 
     // POST: /ManagersNAMES/Edit/5 

     [HttpPost] 
     public ActionResult Edit(int id, TABLE_INSTITUTES dp) 
     { 
      try 
      { 

       using (var db = new InpEntities()) 
       { 

        TABLE_INSTITUTES tmp = (TABLE_INSTITUTES)db.TABLE_INSTITUTES.Where(f => f.ID == id).First(); 
        tmp.MANAGER = dp.MANAGER; 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 
      } 
      catch 
      { 
       return View(); 
      } 
     } 

दृश्य:

var list_managers = list_managers.Select(x => new 
          { 
           Value = x.ID.ToString(), 
           Text = x.Name 
          }) 
          .ToList(); 

ViewBag.managers = new SelectList(list_managers, "ID", "NAME", id); 

और अपना दृश्य बदलने:: 'Edit.chtml'

@{ 
    ViewBag.Title = "Edit"; 
} 

<h2>Edit</h2> 
@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset> 

    <div class="editor-label" style="font-weight:bold">MANAGER</div> 
    <div class="editor-field"> 
     @Html.DropDownList("dp.MANAGER", (SelectList)ViewBag.managers) 
    </div> 

    <p> 
      <input type="submit" value="Save" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

उत्तर

2

आप इस तरह नियंत्रक के भीतर चयनित आईडी निर्धारित करने की आवश्यकता

@Html.DropDownList("dpMANAGER", (SelectList)ViewBag.managers) 
+0

धन्यवाद। यह वैल्यू = x.ID के बारे में शिकायत कर रहा है "int को स्ट्रिंग में int रूपांतरित नहीं कर सकता" मैंने इसे कास्ट करने का प्रयास किया लेकिन – sunskin

+0

काम नहीं करता है क्षमा करें, मैंने इसका परीक्षण नहीं किया है क्योंकि मेरे पास पूर्ण कोड नहीं है। कृपया उपरोक्त के रूप में toString() आज़माएं। – hutchonoid

+0

धन्यवाद मैंने कोशिश की। लगता है ठीक है। हालांकि, मेरे पास यह समस्या है - "प्रकार को रूपांतरित नहीं कर सकता" सिस्टम। चयन। जेनेरिक। सूची 'to' System.Web.Mvc.SelectList '' – sunskin

2

बस चयन के बिना @Html.DropDownList("dp.MANAGER", ViewBag.managers) लिखा, क्योंकि यह पहले से ही चयन सूची में है।

और लिखने ViewBag.managers = new SelectList(list_managers, "ID", "NAME"); की तरह आपकी मदद के लिए इस

+0

आपकी प्रतिक्रिया के लिए धन्यवाद तिमुर! मुझे ड्रॉपडाउन सूची में सिलेक्टलिस्ट का उपयोग करना पड़ा क्योंकि यह एक त्रुटि फेंक रहा है – sunskin

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