2013-11-08 2 views
0

Привет, кто-нибудь может мне помочь, я борюсь с моим кодом. Я пытаюсь, так как два дня, как добавить выпадающий список в сетке я пытаюсь исправить мой код, но я не в состоянии выяснить, почему падение коробки в не отображается в моей сетке моего кодаKendo UI DropBox внутри сетки не работает

<%: Html.Kendo().Grid<KendoGridAjaxEditing2.Models.ProductViewModel>() 
    .Name("grid") 
      .Columns(columns => 
      { 
       columns.Bound(product => product.CustomerID).Width(100); 
       columns.Bound(product => product.CustomerName).ClientTemplate("#=Category.CustomerFName#").Width(160); 
       columns.Bound(product => product.CustomerLastName); 
       columns.Bound(product => product.Customerage).Width(250); 


       columns.Command(commands => 
       { 
        commands.Edit(); // The "edit" command will edit and update data items 
        commands.Destroy(); // The "destroy" command removes data items 
       }).Title("Commands").Width(200); 
      }) 
      .ToolBar(toolbar => toolbar.Create()) // The "create" command adds new data items 
      .Editable(editable => editable.Mode(GridEditMode.InLine)) // Use inline editing mode 
      .DataSource(dataSource => 
       dataSource.Ajax() 
       .Model(model => 
       { 
        model.Id(product => product.CustomerID); // Specify the property which is the unique identifier of the model 
        model.Field(product => product.CustomerID).Editable(false); // Make the ProductID property not editable 
        model.Field(p => p.Category).DefaultValue(
          ViewData["defaultCategory"] as KendoGridAjaxEditing2.Models.ClientCategoryViewModel); 

       }) 
       .Create(create => create.Action("Products_Create", "Home")) // Action invoked when the user saves a new data item 
       .Read(read => read.Action("Products_Read", "Home")) // Action invoked when the grid needs data 
       .Update(update => update.Action("Products_Update", "Home")) // Action invoked when the user saves an updated data item 
       .Destroy(destroy => destroy.Action("Products_Destroy", "Home")) // Action invoked when the user removes a data item 
     ) 
      .Pageable() 
%> 

и метод HomeController

private void PopulateCategories() 
    { 
     var dataContext = new NorthwindEntities(); 
     var categories = dataContext.Customer_details 
        .Select(c => new ClientCategoryViewModel 
        { 
         ID = c.ID, 
         CustomerFName = c.name 
        }) 
        .OrderBy(e => e.CustomerFName); 
     ViewData["categories"] = categories; 
     ViewData["defaultCategory"] = categories.First(); 
    } 

    public ActionResult Index() 
    { 
     ViewBag.Message = "Welcome to ASP.NET MVC!"; 
     PopulateCategories(); 
     return View(); 
    } 

и мой класс ClientCategoryViewModel

public class ClientCategoryViewModel 
{ 

    public int ID { get; set; } 
    public string CustomerFName { get; set; } 
} 

Когда я пытаюсь .ClientTemplate ("# = Category.CustomerFName #") Ширина (160). на мой взгляд, я не получаю никакого результата, но как только я удалю его, моя сетка отображает записи, но я не могу понять, почему я не получаю раскрывающийся список внутри моей сетки, и я пробую последние 2 - 3 дня, и я не могу найти решение, я попытался посмотреть на эту ссылку в качестве руководства http://demos.kendoui.com/web/grid/editing.html, но проблема все еще там, пожалуйста, помогите мне, спасибо

ответ

0

ClientTemplate предназначен для режима отображения, для режима редактирования вам необходимо создать редактор DropDownList. Проверьте следующий раздел: more information. Если вы следуете инструкциям, вы должны заставить его работать.

+0

я не в состоянии показать, а это отображение в текстовом поле и ссылке, которую вы отправить его не связаны с сетью я новичок в mvc, поэтому мне нужна помощь, пожалуйста – user1073794

0

Вы должны использовать columns.ForeignKey, как показано в этом примере:. http://demos.kendoui.com/web/grid/foreignkeycolumn.html

Убедитесь, что у вас есть шаблон редактора GridForeignKey.cshtml (как правило, это в Views \ Shared \ EditorTemplates)

You» Скорее всего, вы захотите связать его с вашим CustomerId, а не с именем. Обычно я связываюсь с IEnumerable. По какой-то причине Кендо заставляет вас сказать, что «Значение» - это столбец значений, а «Текст» - текстовый столбец, даже если они не заставляют вас делать это для нормального, не-сетки.

Если вам нужно, чтобы это быть пустым, привязать его к чему-то вдоль этих линий:

private IEnumerable<SelectListItem> PaymentTermsList 
     { 
      get 
      { 
       if (paymentTermsList == null) 
       { 
        paymentTermsList = 
         new [] { new SelectListItem(){ Value = "-1", Text = "(None)" } }.Concat(
          referenceDataService.GetActivePaymentTerms() 
           .Select(pt => new SelectListItem() { Value = pt.PaymentTermId.ToString(), Text = pt.Name })); 
       } 
       return paymentTermsList; 
      } 
     } 
Смежные вопросы