使用kendo ui Grid中的data()将数据发送到服务器

时间:2013-10-30 08:42:26

标签: model-view-controller grid kendo-ui kendo-grid

当我有一个Ienumerable参数时,如何在kendo ui Grid中使用data()将数据发送到服务器 我无法在Read函数中发送“IEnumerable selectedNodeGroupClass”的数据 网格视图

  @(Html.Kendo().Grid<UserProtocol>()
                              .Name("UserProtocol")
                              .DataSource(dataSource => dataSource
                                  .Ajax()
                                  .PageSize(15)
                                  .Model(model => model.Id(m => m.tblProtocolID))
                                  .Destroy(destroy => destroy.Action(MVC.Protocol.ActionNames.GridRowDelete, MVC.Protocol.Name))
                                  .Read(read => read.Action(MVC.Protocol.ActionNames.ReadProtocols, MVC.Protocol.Name).Data("additionalData"))

                              )
                              .Columns(columns =>
                              {
                                  columns.Template(@<text></text>).ClientTemplate("#= renderNumber(tblProtocolID)#").Width(30).HeaderTemplate(@<text><input type="checkbox" id="SelectAllCheckBox" value="false" /></text>);
                                  columns.Bound(m => m.dateFrom).Title("تاریخ شروع");
                                  columns.Bound(m => m.dateTo).Title("تاریخ پایان");
                                  columns.Bound(m => m.isActive).Title("وضعیت").ClientTemplate("# if (isActive) { #" + "فعال" + "# } else { #" + "غیر فعال" + "# } #");

                                  columns.Bound(m => m.fName).Title("نام");
                                  columns.Bound(m => m.lName).Title("نام خانوادگي");
                                  columns.Bound(m => m.shomarShenasname).Title("شماره شناسنامه");
                                  columns.Bound(m => m.nationalCode).Title("کد ملی");
                                  columns.Bound(m => m.fatherName).Title("نام پدر");
                                  columns.Bound(m => m.isMale).Title("جنسيت").ClientTemplate("# if (isMale == true) { #" + "مرد" + "# } else { #" + "زن" + "# } #");
                                  columns.Bound(m => m.birthDate).Title("تاريخ تولد");
                                  columns.Template(@<text></text>).Width(40)
                                  .ClientTemplate(Html.ActionLink(" ", MVC.Protocol.ActionNames.UpdateProtocol, new { tblProtocolID = "#= tblProtocolID #" }, new { @class = "tablectrl_small bBlue tipS edit MyCustomAddBtn" }).ToHtmlString());
                                  columns.Template(@<text></text>).ClientTemplate(@"<a href=""\#"" class=""k-button-icontext tablectrl_small bRed tipS Remove MyCustomAddBtn"" data-id='#= tblProtocolID #' />").Width(40);//k-grid-delete
                              })
                                  .Sortable()

                                  .Pageable(p => p.Messages(x =>
                                      {
                                          x.Display("تعداد {0} - {1} از {2}");
                                          x.Empty("اطلاعاتی برای نمایش در دسترس نیست.");
                                          x.First("صفحه اول");
                                          x.Last("صفحه آخر");
                                          x.Previous("صفحه قبل");
                                          x.Next("صفحه بعد");
                                          x.ItemsPerPage("مورد");
                                          x.Of("از");
                                          x.Page("صفحه");
                                      }))
                                  .Scrollable()
                            .Editable(editable => editable.DisplayDeleteConfirmation(false))
                     //.Events(ev => ev.DataBound("resetRowNumber"))
                            .HtmlAttributes(new { style = "Height:430px; border-width:0px" })
                         .ToolBar(toolbar => toolbar.Template("<input id=\"DeleteAll\" type=\"button\" value=\"حذف انتخاب شده ها\" class=\"k-button\" />"))
                                  )

我的控制器中的读取功能

 [HttpPost]
    public virtual JsonResult ReadProtocols([DataSourceRequest] DataSourceRequest request, UserProtocol userProtocol = null, IEnumerable<Test> selectedNodeGroupClass = null)
    {

}

测试类:

public class Test
{
    public string ID { get; set; }
    public bool IsSelect { get; set; }
}

和jquery中的data()函数是

 function additionalData() {

        ////Define a class
        function Test(id, isSelect) {
            this.ID=id,
            this.IsSelect=isSelect
        }

        var arr = new Array();

        $('#sidebarmenu1 input:checkbox').each(function () {
            var value;
            var checked = false;
            if ($(this).is(":checked")) {
                checked = true;

            }
            value = $(this).parent().parent().parent().find("input:hidden").first().val();
            var s = new Test(value, checked);
            arr.push(s);

        });
        var strAr = JSON.stringify(arr);
        debugger;

        return {
    selectedNodeGroupClass:arr, 
    dateFrom: $("#dateFrom").val(),
            dateTo: $("#dateTo").val(),
            nationalCode: $("#nationalCode").val(),
            shomarShenasname: $("#shomarShenasname").val(),
            fName: $("#fName").val(),
            lName:$("#lName").val(),








        };
    }

1 个答案:

答案 0 :(得分:0)

默认的MVC Model binder重新排列应该组成数据表单集合的特殊格式。整个魔术在this论坛帖子中讨论。您可以获得一个通用函数来处理来自this code library的JavaScript数组的“转换”,它显示了如何将多选对象集合发送到服务器。