2012-11-14 7 views
0
I have grid in index page and i have another grid in Data page. 

На сетке на странице индекса я нажал кнопку просмотра клика, а затем перенаправил страницу данных, которая также содержит сетку. Мой вопрос в том, как я могу фильтровать сетку на странице данных на основе выбранной записи в сетке на странице индекса.сетка фильтра kendoui, основанная на выбранном другом значении сетки

Как вы можете видеть, в методе GetAllList я попытался отфильтровать сетку, используя rListID, которые поступают из сетки на странице Index.

Просьба сообщить, как я могу это достичь. Спасибо

Index page (View) 

    @(Html.Kendo().Grid<HApp.Models.SModel>() 

     .Name("Grid") 
     .HtmlAttributes(new { @Style = "align:center; font-size:10.5px; length:100%" }) 
     .Columns(columns => 
     { 

      columns.Bound(p => p.RListID).Visible(false); 
      columns.Bound(p => p.TListID).Visible(false); 
      columns.Command(commands => commands.Edit()).Width(175); 
      columns.Command(command => command.Custom("View").Click("OnshowDetails")).Width(150); 


     }) 


     .Selectable(s => s.Mode(Kendo.Mvc.UI.GridSelectionMode.Single)) 
     .Pageable() 
     .Scrollable() 
     .DataSource(dataSource => dataSource 
      .Ajax()//bind with Ajax instead server bind 
      .PageSize(10) 
      .ServerOperation(true) 
       .Model(model => model.Id(p => p.RListID)) 


      .Read(read => read.Action("GetCData", "CDetails").Type(HttpVerbs.Get)) 

     ) 
     //.Events(events => events 
     //      .Change("change")) 



    ) 


    <script type="text/javascript"> 


     function OnshowDetails(e) { 
      var grid = $('#Grid').data('kendoGrid'); //get a reference to the grid data 
      var record = grid.dataItem(grid.select()); //get a reference to the currently selected row 
      var rListID = record.RListID; 

      window.location.href = "@Url.Action("Data ", "CDetails")" + "/?rListID =" + rListID ; 




     } 
    </script> 


Data Page View 

@(Html.Kendo().Grid<HApp.Models.SListsModel>() 

    .Name("SList") 
    .HtmlAttributes(new { @Style = "align:center; font-size:10.5px; length:100%" }) 
    .Columns(columns => 
    { 
     columns.Bound(p => p.RListID).Visible(false); 
     columns.Bound(p => p.CCID); 



     columns.Command(commands => commands.Edit()).Width(175);  
    }) 


    .Pageable() 
    .Selectable(s => s.Mode(Kendo.Mvc.UI.GridSelectionMode.Single)) 
    .Scrollable() 
    .DataSource(dataSource => dataSource 
     .Ajax()//bind with Ajax instead server bind 
     .PageSize(5) 
     .ServerOperation(true) 
     .Model(model => model.Id(p => p.CID)) 

     .Read(read => read.Action("GetListData", "CDetails").Type(HttpVerbs.Get)) 

    ) 
    .Events(events => events 
          .Change("change")) 



) 


Controller: 

    public ActionResult Index() 
    { 

       return View(); 

    } 

    public ActionResult Detail() 
    { 

      return View(); 
    } 


/// <summary> 
     /// Bind to GetListData 
     /// </summary> 
     /// <param name="request"></param> 
     /// <returns></returns> 
     public ActionResult GetListData([DataSourceRequest] DataSourceRequest request) 
     { 
      Response.Cache.SetCacheability(HttpCacheability.NoCache); 
      return Json(GetAllList().ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 
     } 

     private static IEnumerable<SListsModel> GetAllList(Guid rListID) 
     { 


      var context = new HEntities(); 

      return context.SLists 
       .Where(filter => filter.RListID== rListID) 
       .Select(s_list => new SessionListsModel 
       { 

        RListID = s_list.RListID, 
        CCID = s_list.CCID, 



       }); 

     } 



public ActionResult GetCData([DataSourceRequest] DataSourceRequest request) 
     { 
      Response.Cache.SetCacheability(HttpCacheability.NoCache); 
      return Json(GetAllComList().ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 
     } 

     /// <summary> 
     /// Get all available session from Session table 
     /// </summary> 
     /// <returns></returns> 
     private static IEnumerable<SModel> GetAllComList() 
     { 
      var context = new HEntities(); 

      return context.SM 
       .Select(com_list => new SModel 
       { 
        RListID = com_list.RListID, 
        PortID = com_list.PortID , 



       }); 

     } 
+0

http://stackoverflow.com/questions/12354821/mvc-handling-a-corpid-for-the-site – Supermode

ответ

1

Для установки первоначальной фильтрации Энергосистемы я предлагаю вам использовать Filter метод объекта DataSource конфигуратора.

.DataSource(dataSource => dataSource 
      .Ajax()     
      .Filter(flt=>flt.Add(c=>c.RListID).EndsWith(rListIDValuePassedFromController)) 
+0

Привет XMR, Спасибо за ваш быстрый response.Currently я не уверен, как я могу получил значение от элемента управления (rListIDValuePassedFromController). Обратите внимание: как вы можете видеть, в методе GetAllList я попытался фильтровать сетку, используя rListID, которые поступают из сетки на странице Index. То, что я хотел бы передать значение rListID, но в настоящее время не возвращает значение. Поэтому я все еще путаю, как я могу получить rListIDValuPassedFromController. Если есть какой-то способ, я могу получить доступ к значению из: public ActionResult Detail() { return View(); } – Supermode

+0

В основном для передачи объектов из Контроллера в Вид следует использовать ViewData или ViewBag. Я все еще не уверен, что у вас есть значение Guid rListID в контроллере вообще или оно равно null? –

+0

Я пробовал следующее, но все еще не работает. Фильтр (filter => filter.Add (p => p.RListID) .Equals (ViewBag.RListID)) и в контроллере: public ActionResult Detail (Guid rListID) { ViewBag.RListID = rListID; return Вид(); } – Supermode

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