2013-12-01 6 views
0

Я новичок в kendoui и потратил некоторое время, пытаясь обновить сетку, когда пользователь нажимает кнопку, чтобы выбрать новую команду для отображения в сетке. Сетка загружает правильные данные для команды 1 на начальной загрузке бритвы, но повторяет действие, когда другая команда выбирается нажатием кнопки. Fiddler показывает, что на сервере нет вызова.kendoui grid datasource читать не вызывающий сервер

Вот моя бритва кодовая страница:

@model IEnumerable<AFLFootball.ViewModels.PlayerViewModel> 
@{ 
    ViewBag.Title = "Players"; 
} 
<script> 

    function teamFilter(element) { 
     element.kendoDropDownList({ 
      datasource: { 
       transport: { 
        read: "@Url.Action("/Player/FilterMenuCustomization_Teams")" 
       } 
      }, 
      optionLabel: "--Select Value--" 
     }); 
    } 

</script> 
<h2>Player Data</h2> 
<div> 
    <ul class="nav nav-pills "> 

     <li><button class="k-button" id="adelButton" type="button" data-id="1">Adel</button></li> 
     <li><button class="k-button" id="brisButton" type="button" data-id="2">Bris</button></li> 
     <li><button class="k-button" id="carlButton" type="button" data-id="3">Carl</button></li> 
     <li><button class="k-button" id="collButton" type="button" data-id="4">Coll</button></li> 
     <li><button class="k-button" id="essButton" type="button" data-id="5">Ess</button></li> 
     <li><button class="k-button" id="freoButton" type="button" data-id="6">Freo</button></li> 
     <li><button class="k-button" id="geeButton" type="button" data-id="7">Gee</button></li> 
     <li><button class="k-button" id="gcsButton" type="button" data-id="8">Suns</button></li> 
     <li><button class="k-button" id="gwsButton" type="button" data-id="9">GWS</button></li> 
     <li><button class="k-button" id="hawButton" type="button" data-id="10">Haw</button></li> 
     <li><button class="k-button" id="melButton" type="button" data-id="11">Mel</button></li> 
     <li><button class="k-button" id="nmButton" type="button" data-id="12">NM</button></li> 
     <li><button class="k-button" id="paButton" type="button" data-id="13">PA</button></li> 
     <li><button class="k-button" id="richButton" type="button" data-id="14">Rich</button></li> 
     <li><button class="k-button" id="stkButton" type="button" data-id="15">StK</button></li> 
     <li><button class="k-button" id="sydButton" type="button" data-id="16">Syd</button></li> 
     <li><button class="k-button" id="wceButton" type="button" data-id="17">WCE</button></li> 
     <li><button class="k-button" id="wbButton" type="button" data-id="18">WB</button></li> 

    </ul> 
</div> 
<div class="table table-condensed table-striped col-md-5"> 
    @(Html.Kendo().Grid<AFLFootball.ViewModels.PlayerViewModel>() 
    .Name("grid") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.TeamID).ClientTemplate("#=Team.TeamName#") 
         .Filterable(filterable => filterable.UI("teamFilter")) 
         .Width(100); 
     //columns.Bound(p => p.TeamID).Title("Team").Width(150); 
     columns.Bound(p => p.GNumber).Width(30).Filterable(false); 
     columns.Bound(p => p.FirstName).Width(70).Filterable(false); 
     columns.Bound(p => p.LastName).Width(70); 
     columns.Bound(p => p.Listed).Title("Debut").Width(50).Filterable(false); 
     columns.Bound(p => p.Recruited).Title("Recruited From").Width(100).Filterable(false); 
     columns.Bound(p => p.Active).ClientTemplate("<input type='checkbox' #= Active ? checked='checked' :'' # />").Title("Current").Width(30); 
     columns.Command(command => { command.Edit(); command.Destroy(); }).Width(160); 
    }) 
     .ToolBar(toolbar => toolbar.Create()) 
     .Editable(editable => editable.Mode(GridEditMode.PopUp)) 
     .Sortable() 
     .Scrollable() 
     .Pageable() 
     .Filterable(filterable => filterable 
       .Extra(false) 
       .Operators(operators => operators 
        .ForString(str => str.Clear() 
         .IsEqualTo("Is equal to") 
         .IsNotEqualTo("Is not equal to") 
        )) 
       ).HtmlAttributes(new { style = "height:540px;" }) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .Batch(false) 
      .ServerOperation(false) 
      .PageSize(9) 
      .Events(events => events.Error("error_handler")) 
      .Model(model => 
      { 
       model.Id(p => p.Id); 
       model.Field(p => p.Id).Editable(false); 
       model.Field(p => p.GNumber); 
       model.Field(p => p.FirstName); 
       model.Field(p => p.LastName); 
       model.Field(p => p.Listed); 
       model.Field(p => p.Recruited); 
       model.Field(p => p.Active); 
      }) 
      .Create(update => update.Action("Create", "Player")) 
        .Read(read => read.Action("GetPlayers", "Player", new { team = 1 })) 
        .Update(update => update.Action("Edit", "Player")) 
        .Destroy(update => update.Action("Delete", "Player")) 
     ) 
    ) 
</div> 
<script type="text/javascript"> 
    function error_handler(e) { 
     if (e.errors) { 
      var message = "Errors:\n"; 
      $.each(e.errors, function (key, value) { 
       if ('errors' in value) { 
        $.each(value.errors, function() { 
         message += this + "\n"; 
        }); 
       } 
      }); 
      alert(message); 
     } 
    }; 



    $(document).ready(function() { 

     $("#adelButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 1"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#brisButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 2"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#carlButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 3"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#collButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 4"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#essButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 5"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#freoButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 6"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#geeButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 7"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#gcsButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 8"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#gwsButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 9"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#hawButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 10"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#melButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 11"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#nmButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 12"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#paButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 13"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#richButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 14"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#stkButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 15"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#sydButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 16"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#wceButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 17"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
     $("#wbButton").click(function() { 
      var newUrl = "/Player/GetPlayers/?team = 18"; 
      $("#grid").data("kendoGrid").dataSource.transport.options.read.url = newUrl; 
     }); 
    }); 

</script> 

Любые мысли будут оценены

+0

РЕДАКТИРОВАТЬ: выше следует читать в тексте: но делает ** НЕ ** повторно действовать, когда другая команда выбрана нажатием кнопки –

ответ

3

Две проблемы:

  1. Вы просто изменить транспортный адрес в обработчике щелчка. Это не будет автоматически получать данные для вас. Вам необходимо позвонить $("#grid").data("kendoGrid").dataSource.read() или $("#grid").data("kendoGrid").dataSource.fetch() (после смены адреса).
  2. У вас есть пробел вокруг вашего параметра team в URL-адресе; вы должны удалить их.
+0

Ларс внес изменения, которые вы предложили, и это сработало отлично. –

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