2014-12-02 1 views
0

Сортировка и фильтрация не работают над столбцом, связанным с объектом ViewModel. Он отлично работает с другими столбцами.Как сделать Сортировку и Фильтрацию, работающую для столбца viewmodel в InLine, редактировании сетчатого сигнала MVC Kendo UI?

Пример кода сетки:

@(Html.Kendo().Grid<abc.Models.ShippingViewModel>() 
    .Name("ShippingGrid") 
    .Columns(c => 
    { 
     c.Bound(m => m.Id).Hidden(); 
     c.Bound(m => m.LocationViewModel) 
      .ClientTemplate("#=LocationViewModel.LocationName#") 
      .Title("Pickup Location") 
      .HeaderHtmlAttributes(new { @title = "Pickup Loactions" }); 
     c.Bound(m => m.UnitsShipped) 
      .HtmlAttributes(new { style = "text-align:right" }) 
      .HeaderHtmlAttributes(new { title = "Units Shipped", style = "text-align: right" }); 

Модель:

public class InHouseShippingViewModel 
    { 
     [ScaffoldColumn(false)] 
     public int Id { get; set; } 

     [Required] 
     [UIHint("ShippingLocationEditor")] 
     public LocationViewModel LocationViewModel { get; set; } 

     [Required] 
     [Display(Name = "Units Shipped")] 
     [UIHint("ComanexIntegerEditor")] 
     [DisplayFormat(DataFormatString = GlobalVaribleDeclarations.displayFormatForInteger)] 
     public int UnitsShipped { get; set; } 
    } 

концентратор код/​​Контроллер:

public IEnumerable<ShippingViewModel> Shipping_Read() 
     { 
      var queryResult = ShippingRepository.Shipping_Read(); 
      return queryResult; 
     } 

Здесь Сортировка работает отлично на колонке "UnitShipped", тогда как это не работая над столбцом «LocationViewModel». Если я использую c.Bound (m => m.LocationViewModel.LocationName), сортировка & работает нормально, но тогда я не могу получить DropDownEditor для этого столбца при редактировании записи. Здесь я использую «InLine».

Я тестировал это с помощью редактирования «PopUp» и все работает нормально. Я бы хотел добиться этого с помощью редактирования InLine.

Пожалуйста, сообщите, что мне нужно сделать для редактирования «InLine» с выпадающим списком Cascading и сортировкой. благодаря!

ответ

0

есть смесь вещей, чтобы сделать. Сначала для фильтрации и т. Д. Вам нужно использовать параметр datasourcerequest, как в обычных вызовах ajax, но затем вы узнаете, что сортировка не работает.

public DataSourceResult Read(MyDataSourceRequest request) 
    { 
} 

это не работает, так как кэндо регулярного использования «видов» для прохождения коллекции рода и эта коллекция передается по signalr источника данных, как «рода» (не с). вам придется использовать динамический пакет linq nuget, у которого есть пользовательский запрос источника данных, который будет работать с signalr. Скопируйте их код в свое решение для пользовательского объекта datarequest и немного синтаксиса todatasourceresult.

http://www.telerik.com/forums/problems-with-grid-using-signalr-and-serverfiltering-sorting-and-paging

ретрансляция информации необходимо обернуть в datasourceresult а

Clients.Others.update(WrapInDataSourceResult(item)); 

     public DataSourceResult WrapInDataSourceResult(EmployeeViewModel item) 
    { 
     return new DataSourceResult 
       { 
        Data = new[] 
          { 
           item 
          } 
       }; 
    } 

также необходимо активировать на стороне сервера параметры serverpaging (истина) и т.д.

.SignalR() 
.AutoSync(true) 
.Sort(c => c.Add(e => e.FullName).Ascending()) 
.ServerAggregates(true) 
.ServerPaging(true) 
.ServerSorting(true) 
.ServerGrouping(true) 

и в схеме

.Schema(schema => schema 
    .Data("Data") 
    .Total("Total") 
    .Aggregates("Aggregates") 
    .Groups("Groups") 
    .Model(model => 
    { 
     model.Id(m => m.EmployeeId); 
    }) 
+0

Спасибо за ответ, Loic! – giparekh

+0

, пожалуйста, отметьте как решение, если вы чувствуете, что это –

Смежные вопросы