2015-08-24 3 views
-1

У меня проблема с выпадающим списком, и я не могу понять, как его решить.DropDownList Children Binding

Есть два разных способа войти в мой взгляд: Добавить новые и редактировать.

1) Добавить новое: В этой ситуации мой раскрывающийся список связан с другим, и все работает отлично. раскрывающийся список заблокирован и пуст, пока я не выберу что-то в другом.

2) Редактировать: В этой ситуации мой раскрывающийся список уже привязан с использованием сохраненных данных. Конечно, если я изменю выбранный элемент в «родительском», я тоже хочу изменить данные для детей.

Проблема возникает в случае 2: ​​когда я выбираю что-то еще из сохраненных данных в соответствующем выпадающем списке. Он связывает правильные данные, но он дает пустой элемент как первый, а не первый из данных.

Как его решить?

      <%=Html.Kendo().DropDownListFor(model => model.GNR_FK) 
           .Name("GNR_FK")                 .BindTo((IEnumerable<Models.Widget.Combo>)ViewData["Customer"]) 
           .DataTextField("descriptionText") 
           .DataValueField("valueID") 
           .Value(Model.GNR_FK.ToString()) 
           .Events(e => 
             { 
              e.Select("onSelect"); 
             })            
          %> 

          <%=Html.Kendo().DropDownListFor(model => model.CNT_FK)         .BindTo((IEnumerable<Models.Widget.Combo>)ViewData["Sender"]) 
           .Name("CNT_FK") 
           .DataTextField("descriptionText") 
           .DataValueField("valueID") 
           %> 

Состояние:

 if (Model.PK == 0) 
     { 
      loadValues(current); 
     } 
     else 
     { 
      loadEditValues(current); 
     } 


    public JsonResult loadValues(Models.Model current, int PK = 0) 
    { 

      IDataReader sender = Model.getSender(PK); 
      Models.Widget.Combo SenderNA = new Models.Widget.Combo(); 
      List<Models.Widget.Combo> receiveSender = new List<Models.Widget.Combo>(); 

      SenderNA.valueID = 0; 
      SenderNA.descriptionText = "NA"; 
      receiveSender.Add(SenderNA); 

      while (sender.Read()) 
      { 
       Models.Widget.Combo newItem = new Models.Widget.Combo(); 

       newItem.valueID = int.Parse(sender["PK"].ToString()); 
       newItem.descriptionText = sender["SURNAME"].ToString(); 

       receiveSender.Add(newListItem); 
      } 

      return Json(receiveSender, JsonRequestBehavior.AllowGet); 
    } 


    private void loadEditValues(Models.Model current) 
    { 

      int selected = current.GNR_FK; 

      IDataReader sender = current.getSender(selectedCustomer); 

      Models.Widget.Combo SenderNA = new Models.Widget.Combo(); 
      List<Models.Widget.Combo> receiveSender = new List<Models.Widget.Combo>(); 

      SenderNA.valueID = 0; 
      SenderNA.descriptionText = "NA"; 
      receiveSender.Add(SenderNA); 

      while (sender.Read()) 
      { 
       Models.Widget.Combo newItem = new Models.Widget.Combo(); 

       newItem.valueID = int.Parse(sender["PK"].ToString()); 
       newItem.descriptionText = sender["SURNAME"].ToString(); 

       receiveSender.Add(newListItem);    


       ViewData["List"] = receiveSender; 
      }   

    } 

Сценарий:

С уважением

ответ

0

проблема решена!

Отсутствие метода выбора для автоматического выбора первого элемента после изменения данных!

success: function (result) { 
    var dropdown = $("#CNT_FK").data("kendoDropDownList"); 
    dropdown.dataSource.data(result); 
    dropdown.select(0); 
},