Grid.MVC禁用嵌入式按钮的onrowselect

时间:2016-04-27 11:30:11

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

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

由于

2 个答案:

答案 0 :(得分: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;

    });
});

答案 1 :(得分:0)

 function DeactivateContract(e) {
  event.stopImmediatePropagation()
  //DO STUFF
};

event.stopImmediatePropagation调用将阻止rowselect随后触发。