Kendo Grid command.custom url

时间:2015-06-15 19:03:17

标签: asp.net-mvc kendo-grid

我正在尝试使用command.custom来处理网址。我有command.Custom("Tasks");,它会创建按钮。但我无法弄清楚如何让它指向这个网址../../OBClientSetupTasks/Index/@item.SetupID

我试图让它做一个.action并点击控制器并查看但它返回一个不支持的异常

 command.Custom("Tasks").Action("Index", "OBClientSetup");

我似乎无法识别@item.SetupID。 item通常来自foreach,但在这种情况下,我看不到foreach会去哪里。

编辑:

添加完整网格

@(Html.Kendo().Grid<XXX_2_0_OBOE.OpenAccess.OBClientSetup>()
          .Name("grid")
          .Columns(columns =>
          {
              columns.Bound(obcs => obcs.ProfileName);
              columns.Bound(obcs => obcs.Default).ClientTemplate("#= Default ? 'Yes' : 'No' #");
              columns.Bound(obcs => obcs.EEFinalize).ClientTemplate("#= EEFinalize ? 'Yes' : 'No' #");
              columns.Bound(obcs => obcs.AllowOutsideCodes).ClientTemplate("#= EEFinalize ? 'Yes' : 'No' #");
              columns.Bound(obcs => obcs.Completed).ClientTemplate("#= Completed ? 'Yes' : 'No' #");
              columns.Command(command =>
              {
                  command.Custom("Tasks").Action("Index", "OBClientSetup", new { SetupID = Model.SetupID });
                  command.Edit();
                  command.Destroy().HtmlAttributes(new { @class = "onboard-delete " });
              });
          })
          .ToolBar(toolbar =>
          {
              toolbar.Template(@<text>
                <div class="toolbar">

                    <div class="row">
                        <div class="col-md-3 pull-right">
                            <div class="input-group">
                                <span class="input-group-addon"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></span>
                                <input type="text" class="form-control" id='FieldFilter' placeholder="Search Profile Name">
                            </div>
                        </div>
                    </div>
                </div>
            </text>);
          })
                  .HtmlAttributes(new { @class = "table-responsive" })
                  .Groupable()
                  .Pageable()
                  .Sortable()
                  .Editable(editable => editable.Mode(GridEditMode.InLine))
                  .DataSource(dataSource => dataSource
                      .Ajax()
                      .Read(read => read.Action("OB2_ClientProfiles", "OB"))
                      .PageSize(5)
                      .Update(update => update.Action("EditingInline_Update", "OB"))
                      .Destroy(update => update.Action("EditingInline_Destroy", "OB"))
                      .Model(model => model.Id(obcs => obcs.SetupID))
                  )
    )

模特

public partial class OBClientSetup
{
    private int _setupID;
    public virtual int SetupID
    {
        get
        {
            return this._setupID;
        }
        set
        {
            this._setupID = value;
        }
    }

这个想法是这样他们可以点击按钮并发送到OBClientSetupTasks/Index/1或者他们的ID

1 个答案:

答案 0 :(得分:0)

要以这种方式使用Grid模型,您可能需要这样的东西:

创建一个JavaScript函数来处理click事件。在这里你可以获取SetupID。我不知道你的控制器的动作是什么,但有一些选择。

如果要更改为“索引”页面,请执行以下操作:

<script>
    function SetupTasks(e) {
        e.preventDefault();
        var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
        window.location.href = '@Url.Action("Index", "OBClientSetup")' + "/" + dataItem.SetupID;
    }
</script>

或者,执行一些像这样的ajax请求:

<script>
    function SetupTasks(e) {
        e.preventDefault();
        var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
        windows.location.href = '@Url.Action("Index", "OBClientSetup")',
            type: "POST",
            dataType: "json",
            data: { SetupID: dataItem.SetupID },
            success: function (data) {
                // Handle return value
            }
        });
    }
</script>

在你的网格中指定你的命令按钮:

command.Custom("Tasks").Click("SetupTasks");