1

我有一个 Grid.MVC 表,它可以与用于编辑每一行的行选择功能一起正常工作。为了加快速度,我试图在第一列中添加一个电源按钮,这将有效地在数据库级别切换行的活动或非活动。

但是,当单击按钮时,它会同时触发按钮的代码和 onRowSelect 代码。是否可以关闭某些列的 onRowSelect,或者如果没有点击对象,那么如果我知道某个按钮已被按下,我就无法触发选择代码?

网格代码如下。

   @Html.Grid(Model.AllContracts).Named("contractsGrid").Columns(columns =>
            {
                columns.Add(item => item.ContractTypeID)
                    .Titled("ID")
                    .Css("grid-id hidden")
                    .SetWidth("50px")
                    .Sortable(true);
                columns.Add(item => item.active)
                    .Titled("")
                    .Encoded(false)
                    .Sanitized(false)
                    .SetWidth(30)
                    .RenderValueAs(o => @<button onclick="DeactivateContract()"><i class='oi iconPowerOn' data-glyph='power-standby' title='Deactivate Contract'></i></button>);

                columns.Add(item => item.ContractDescription)
                    .Titled("Contract Name")
                    .Sortable(true).Filterable(true);
            }).WithPaging(7)

还有剧本

<script>
$(function () {
    pageGrids.contractsGrid.onRowSelect(function (e) {
        debugger;
        var clientID = e.row.ContractTypeID;
        var url = '@Url.Action("UpdateContract", "Contracts", new { id = -1 }) ';
        url = url.replace("-1", e.row.ContractTypeID);
        window.location.href = url;

    });
});

function DeactivateContract() {
    alert("DEACTIVE")
};

谢谢

4

2 回答 2

0

将类停用添加到您的按钮

   .RenderValueAs(o => @<button class="deactivate" onclick="DeactivateContract()"><i class='oi iconPowerOn' data-glyph='power-standby' title='Deactivate Contract'></i></button>);

然后在活动

$(function () {
pageGrids.contractsGrid.onRowSelect(function (e) {
    debugger;
    if(e.row.attr("class") != "deactivate") 
    return false;

    var clientID = e.row.ContractTypeID;
    var url = '@Url.Action("UpdateContract", "Contracts", new { id = -1 }) ';
    url = url.replace("-1", e.row.ContractTypeID);
    window.location.href = url;

    });
});
于 2016-04-27T11:48:24.110 回答
0
 function DeactivateContract(e) {
  event.stopImmediatePropagation()
  //DO STUFF
};

event.stopImmediatePropagation 调用将停止 rowselect 之后触发。

于 2016-04-27T14:32:18.303 回答