Как перепривязать мою сетку Telerik MVC после вставки элемента - PullRequest
1 голос
/ 10 февраля 2012

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

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 31 июля 2012

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

 @(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"))

)

Код контроллера

[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 голосов
/ 20 сентября 2013

По завершении вашего действия вы можете позвонить: JQuery ( "# gvPackage"). Данные ( "т-решетка"). ajaxRequest ()

0 голосов
/ 01 июня 2012

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

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

0 голосов
/ 10 февраля 2012

Вы можете перепривязать свою сетку, вернув 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].

Предполагается, что ваша сетка имеет объявление ajax DataBinding следующим образом:

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