Telerik MVC3 Razor Grid - 从Controller返回的局部视图

时间:2012-05-03 18:58:57

标签: asp.net-mvc-3 controller partial-views telerik-grid

我有一个带有几个用于搜索的控件的视图。当用户搜索(Ajax.BeginForm)时,我将数据返回到动态生成的PartialView(Telerik MVC3网格)中。

一切正常。在网格中是用于选择行的按钮。当我选择一行时,它会发布到我的控制器,我会做一些" stuff"当我试图回到视图时,我得到的只是页面上的网格数据,它显示为没有边框的表格,没有其他控件等。我的代码在下面。

我的部分网格:

@model Highlander.Areas.Highlander.Models.ViewModels.DeliveriesGridViewModel
@using System.Data;

@(Html.Telerik().Grid<System.Data.DataRow>(Model.Data.Rows.Cast<System.Data.DataRow>())
.Name("Grid")
.DataKeys(dataKeys => dataKeys.Add("DeliveryID"))
.Columns(columns =>
{
    columns.Command(commandbutton =>
        {
            commandbutton.Select().ButtonType(GridButtonType.ImageAndText);
        }).Width(80).Title(ViewBag.Title);
    columns.LoadSettings(Model.Columns as IEnumerable<GridColumnSettings>);
})
    .DataBinding(dataBinding => dataBinding.Server().Select("_MarkSystem", "Deliveries"))
.EnableCustomBinding(true)
.Resizable(resize => resize.Columns(true))
)

我的控制器:

[GridAction]
public ActionResult _MarkSystem(GridCommand command, int id)
{
    string shipDeliver = DataCache.ShipDeliver;
    DataTable fullTable = DataCache.FullTable;

    // call to function to get the datatable data based on the id
    rHelpers.GetDataTableRow(id, fullTable, shipDeliver);

    // get the data for the grid into the model
    fullTable = DataCache.FullTable;
    model = new DeliveriesGridViewModel();
    model.Data = fullTable;
    model.Columns = rHelpers.NewColumns(DataCache.FullTable);

    return PartialView("_DeliveryGrid", model);

    //if (Request.IsAjaxRequest())
    //{
    //    return PartialView("_DeliveryGrid", model);
    //}
    //return PartialView("_DeliveryGrid", model);
    //return PartialView("DeliveryManager", model);
}

正如你所看到的,我尝试了各种各样的事情但没有成功。

任何人都可以给我一些指导。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

据我所知,您正在使用调用服务器端绑定的dataBinding.Server()。使用.Editable(editing => editing.Mode(GridEditMode.InLine)它会起作用。

两种绑定(服务器和Ajax)都需要编辑模式。进入编辑模式并再试一次。如果它不适合您,请回复。这里是完整的数据绑定代码:

  **.DataBinding(dataBinding => dataBinding.Ajax()
                                        .Select("myAction", "myController")
                                        .Update("myAction",myController")).
  Editable(editing => editing.Mode(GridEditMode.InLine))**