Grid.MVC 禁用嵌入按钮的行选择

Grid.MVC disable onrowselect for embedded buttons

本文关键字:按钮 行选 选择 MVC Grid      更新时间:2023-09-26

我有一个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")
};

谢谢

将类停用添加到按钮

   .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;
    });
});
 function DeactivateContract(e) {
  event.stopImmediatePropagation()
  //DO STUFF
};

event.stopImmediatePropagation 调用将阻止行选择在之后触发。