2012-02-10 4 views
1

Моя сетка Telerik MVC 3 заполняется через Ajax. После вставки строки мне нужно перестроить сетку. Когда я делаю повторную проверку в событии OnSave(), переинформация данных по-прежнему отправляется на действие контроллера. Мне нужно что-то вроде события OnInserted.Как перенастроить сетку MVC Telerik после того, как элемент вставлен?

Любая идея?

ответ

3

Используйте следующие критерии,

@(Html.Telerik().Grid<PackageDetails>() 
    .Name("gvPackage") 
    .DataKeys(keys => keys.Add(k => k.PKG_CODE)) 
    .Columns(column => 
    { 
     column.Bound(c => c.PKG_NAME).Title("Description").Width(200); 
     column.Bound(c => c.MESG_UNIT).Title("Measuring Unit").Width(100); 
     column.Bound(c => c.STD_QNT).Title("Quantity").Width(100); 
     column.Bound(c => c.MODEL).Title("Model").Width(100); 

     column.Bound(c => c.COMP_CODE).ClientTemplate("<input type='text' id='txtSerial<#=COMP_CODE#>' value='<#=PKG_NAME#>' />").Title("Serial Number"); 

     column.Bound(c => c.COMP_DESC).Title("Model").Width(100); 
            }) 
     .DataBinding(dbBindings => dbBindings.Ajax().Select("_PackageDetailsLoad", "SalesDept")) 

)

Controller Код

[GridAction] 
     public ActionResult _PackageDetailsLoad(string programID, string projectID, string packageID) 
     { 
      objLoginHelper = (LoginHelper)Session["LogInInformation"]; 

      return View(new GridModel<PackageDetails> 
      { 
       Data = salesDal.ReadPackageDetails(programID, projectID, packageID) 
      }); 
     } 

В JavaScript используйте следующий код

$('#ddlProgram').change(function() {   
    LoadPackageAndBindGrid(); 
}); 

function LoadPackageAndBindGrid() { 

      var params = { 
       programID: $('#ddlProgram').val(), 
       projectID: $('#ddlProject').val(), 
       packageID: $('#ddlPackage').val() 
      }; 

      var grid = $('#gvPackage').data('tGrid'); 
      grid.dataSource._data = [];    

      // Reload The Package Details 
      grid.ajaxRequest(params); 
     } 
0

Вы можете переназначить вашу сетку, возвращая GridModel из контроллера после выполнения кода вставки:

[AcceptVerbs(HttpVerbs.Post)] 
[GridAction] 
public ActionResult _ItemInsert(int id, MyObject obj) 
{ 
    //Rebind the grid by sending the GridModel back 
    return View(new GridModel(myData)); // where myData is your grid data 
} 

Не забудьте украсить ваш контроллер с [GridAction].

Это предполагает, что ваша сетка имеет АЯКС декларацию DataBinding следующим образом:

dataBinding.Ajax() 
.Insert("_ItemInsert", "Item" }) 
+0

Моя модель связывается с выпадающим списком ( – user571874

0

Это зависит от того, как вы добавляете строку. Сетка должна обновляться автоматически, если вы выполняете редактирование в сетке. Если вы добавляете запись из формы, вы можете использовать метод обратной связи() на стороне клиента для обновления данных сетки.

http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-grid-client-api-and-events.html#rebind

0

В комплекте ваших действий вы можете позвонить:.. JQuery ("# gvPackage") данных ("T-сетка") ajaxRequest()

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