【问题标题】:Kendo grid mvc - pass grid row through javaScript functionKendo grid mvc - 通过 javaScript 函数传递网格行
【发布时间】:2016-10-19 12:47:32
【问题描述】:

我正在使用带有复选框客户端模板的剑道网格,我想将行传递给函数。

<div>

    @(Html.Kendo().Grid(Model).Name("EvaluationFormGrid").DataSource(dataSource => dataSource
          .Ajax()
          .Model(model =>
          {
              model.Id(m => m.EventEvaluationFormId);
              model.Field(m => m.EventEvaluationFormId).Editable(false);
          })
          .Destroy(delete => delete.Action("DeleteEvaluationForm", "EvaluationFormsManagement"))
          .PageSize(60)
          .ServerOperation(false)
          ).Columns(c =>
          {
              c.Bound(m => m.EvaluationFormTitle).Width(150).Title("Evaluation Form Title");
              c.Bound(m => m.EvaluationFormLink).Width(300).Title("Evaluation Form Link");
              c.Bound(m => m.ModifiedUserName).Title("Mod. by").Width(80);
              c.Bound(m => m.ModifiedDateUtc).Title("Mod. date").Width(80);
              c.Bound(m => m.IsDisplayedInApp).Title("Is displayed in app").Width(80)
                 .ClientTemplate("<input type='checkbox' #= IsDisplayedInApp ? checked='checked' :'' # value='#=IsDisplayedInApp#' onClick='onChange(#=IsDisplayedInApp#)'/>");
              c.Bound(m => m.EventEvaluationFormId).Title(string.Empty).Width(80)
                  .ClientTemplate("<a class='table-entry-control edit-entry-control' href='" + Url.Action("ManageEvaluationForm", "EvaluationFormsManagement",
                      new { area = "Admin" }) + "/#= EventEvaluationFormId #'" + "><span class=\"k-icon k-edit\"></span>Edit</a><br />")
                  .Sortable(false);
              c.Command(commands =>
              {
                  commands.Destroy();

              }).Title("").Width(80);

          })
          .Events(events => events.Change("onChange"))
          .Editable(e => e.DisplayDeleteConfirmation(true)).Deferred().DataSource(datasource =>
              datasource
                  .Ajax()
                  .ServerOperation(false)).Deferred(true))


    <script>
        function onChange(arg) {
            alert(arg);
            var selected = $.map(this.select(), function (item) {
                return $(item).text();
            });

            kendoConsole.log("Selected: " + selected.length + " item(s), [" + selected.join(", ") + "]");
        }
    </script>

</div>

我想通过这一行传递整行,现在我只传递一个布尔值:

c.Bound(m => m.IsDisplayedInApp).Title("Is displayed in app").Width(80)
                     .ClientTemplate("<input type='checkbox' #= IsDisplayedInApp ? checked='checked' :'' # value='#=IsDisplayedInApp#' onClick='onChange(#=IsDisplayedInApp#)'/>");

有谁知道我如何在这里传递行:

onClick='onChange(#=IsDisplayedInApp#)

谢谢

【问题讨论】:

    标签: javascript jquery asp.net-mvc kendo-ui kendo-grid


    【解决方案1】:

    试试这个:

    function onClick(chk) {
       var grid = $('[name="EvaluationFormGrid"]').data("kendoGrid");
    
       // Get the row
       grid.dataItem($(chk).closest("tr"));
    };
    

    我不习惯 Kendo MVC,所以我不知道 .Name() 生成什么,但在函数的第一行,您必须将网格小部件实例获取到 grid var。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      相关资源
      最近更新 更多