2013-02-14 2 views
0

В действии Create я могу добавить информацию в поля редактора и сохранить их в таблице 1, однако для одного из полей я хочу выпадающий список , заполненный из столбца таблицы 2, который затем можно выбрать и сохранить в таблице 1 в одном из полей, в зависимости от выбора. Мне удалось отобразить информацию в раскрывающемся таблице из Table2, но не передать его в Table1Использование Html.DropDownListДля того, чтобы перечислить данные из одной таблицы, но сохраните их в другом

Model1:

public int id { get; set; } 
    public string JobNo { get; set; } 
    public string DelNo { get; set; } 
    public Nullable<int> DeptToPack { get; set; } 
    public string PackNo { get; set; } 
    public Nullable<decimal> TargetHrs { get; set; } 
    public Nullable<System.DateTime> PackingDate { get; set; } 
    public virtual Table2 Table2{ get; set; } 

Модель 2:

public Table2() 
{ 
    this.Table1= new HashSet<Table1>(); 
} 

public int id { get; set; } 
public string Dept { get; set; } 
public virtual ICollection<Table1> Table1{ get; set; } 

Комбинированные модели:

public class Combined 
    { 
     public Table1 Table1 { get; set; } 
     public Table2 Table2{ get; set; } 
    } 

В настоящее время в представлении отображаются текстовые редакторы для всех полей, которые можно редактировать, и sav ed в базу данных с помощью SaveChanges(); на HomeController, под действием Create

Создать Действие

public ActionResult Create() 
     { 


      IEnumerable<SelectListItem> items = _db.Table2 
       .Select(c => new SelectListItem 
       { 
        Value = c.Dept, 
        Text = c.Dept 
       }); 

      ViewBag.Dropdownlist = items; 


      return View(); 
     } 


     [HttpPost] 
     public ActionResult Create(Table1 table1) 
     { 
      if (ModelState.IsValid) 
      { 
       _db.Table1.Add(table1); 
       _db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      return View(table1); 
     } 

И вид отображает информацию из table1 и одно поле из table2. Я, кажется, возникли проблемы с элементом @ Html.DropDownList

я в настоящее время (ниже), который отображает данные, но не могут быть обработаны для Table1

@Html.DropDownList("Table1.Field1", (IEnumerable<SelectListItem>) ViewBag.DropDownList) 

Надеюсь изображение объясняет это лучше, наполненную ввод поля будут сохранены в таблице 1 , за исключением 1 поля, которое является выпадающим списком из столбца {InfoToPass}, из таблицы 2, в котором можно выбрать один из 4 вариантов, тогда это значение вместе со всеми другими входами будет сохранено в Таблица 1

enter image description here

+0

Вы нашли решение вашей проблемы. Если да, то можете ли вы поделиться им? –

+0

Я почти получил это, просто сделав некоторые настройки, тогда я отправлю свой ответ – iswinky

ответ

0

Мой сценарий участвует присоединиться несколько таблиц, чтобы обеспечить определенное значение столбца (так что вы можете игнорировать то LINQ запрос) , который будет отображаться в выпадающем списке. Затем пользователь может выбрать значения (если они есть) из выпадающего списка, которые затем могут быть сохранены в другой таблице (Таблица 1).

Создать вид:

@model TharInfo2.Models.Combined 

    <div class="editor-field"> 
    @Html.DropDownListFor(model => model.Table1.DelNo, (IEnumerable<SelectListItem>)ViewBag.Rev) 
    </div> 

Создание контроллера:

 public ActionResult Create() 
      { 
      var rd = RouteData.Values["jobno"]; 
      var query = (from t in _db.table3 
         join d in _db.table2 on t.delivery_number equals d.ID 
         join m in _db.table4 on d.OrderNo equals m.JobNo 
         where m.JobNo == rd 
         select new 
           { 
            t.rev_delivery_number 
           }); 


      IEnumerable<SelectListItem> rev_del = query 
         .Select(c => new SelectListItem 
         { 
          Value = c.rev_delivery_number, 
          Text = c.rev_delivery_number 
         }); 


      ViewBag.Rev = rev_del; 


      return View(); 
      } 




       [HttpPost] 
       public ActionResult Create(Table1 table1) 
       { 



        if (ModelState.IsValid) 
        { 
         _db.Table1.Add(table1); 
         _db.SaveChanges(); 
         return RedirectPermanent("Index"); 


        } 

        return View(table1); 
       } 
0

Вам необходимо создать объект table1 и передать ему соответствующие значения из объекта, передаваемого в контроллер, а затем сделать то же самое с новым объектом table2 и параметрами, которые имеют к нему отношение. Как только оба будут правильно заполнены, сохраните их соответствующие таблицы и сохраните изменения.

После сортировки двух объектов вы закончите с somethign, как это, чтобы спасти:

_db.Table2.Add(table2); 
_db.Table1.Add(table1); 
_db.SaveChanges();