2014-02-11 4 views
0

У меня есть основной вид с 3 частичными видами. Один из частичных представлений содержит сетку кендо, которая должна быть сортируемой.kendo ui grid sort partial view

@(Html.Kendo().Grid(Model) 
    .Name("tasksgrid") 
    .Sortable() 
    .Filterable() 
    .HtmlAttributes(new { style = "height:100%; font-size:14px;" }) 
    .Columns(columns => 
    { 
     columns.Bound(e => e.Url).Title("URL").Hidden(); 
     columns.Bound(e => e.Id).Title("ID").Hidden(); 

     columns.Template(@<img src="@item.OperatorCreated.ImageSource" style="width:80px;height:80px;"/>).ClientTemplate(" ").Width(100).Title("Picture"); 
     columns.Bound(e => e.Subject).Template(@<div> 
      <div style="font-size: 20px;">@item.OperatorCreated.Name</div> 
      <div>@item.Subject<br />@item.Message</div> 
     </div>).Title("Details").HtmlAttributes(new {id = "detailcolumn"}); 
     columns.Bound(e => e.DateTimeCreated).Title("Date").Width(100).HtmlAttributes(new { id = "datecolumn" }); 
    })   
    .Selectable(selectable => selectable.Mode(GridSelectionMode.Single)) 
     .DataSource(dataSource => dataSource 
      .Server() 
      .Model(model => model.Id(p => p.Id)) 
     ) 
    .Events(events => events.Change("onChange")) 
    .Scrollable() 
) 

Этот частичный вид отображается только в том случае, если выбрано определенное действие в другом представлении. Которая затем извлекает данные для заполнения сетки.

function RefreshTasks(name) { 
    var serviceUrl = "/Tasks/PopulateTasks?actionname=" + name; 
    var request = $.post(serviceUrl); 

    request.done(
     function (data) { 
      $("#tasks").html(data); 
     } 
    ); 
} 

Когда сортировка производится по сетке создается следующий URL "локальный: 1772/tasksgrid сортировки = DateTimeCreated-убывание & tasksgrid-группа = & tasksgrid-фильтр =" , который обновляет всю страницу что означает, что мой частичный вид с сеткой больше не существует.

Есть ли способ выбросить этот URL-адрес только в частичный вид.

Я нашел способ сделать именно то, что мне нужно для этой реализации.

$("#tasksgrid .k-link").click(function (e) {//call the function when column header is clicked 
    var thelink = e.target.href;//get the url that would be navigated to on sort 

    var serviceUrl = thelink; 
    var request = $.post(serviceUrl);//post the url 

    request.done(
     function (data) { 
      $("#tasks").html(data);//update div 
     } 
    ); 

    return false;//cancels navigation 
}) 

ответ

1

Вы должны настроить сетку для использования привязки Ajax. В противном случае он обновит всю страницу. Дополнительная информация доступна в documentation.