2016-09-07 9 views
0

お客様は、行のどこかをクリックして対応する詳細ページを開くことができる剣道グリッドが必要でした。ボタン剣道グリッド列をクリックして全行をクリックしてください

const cols = [ 
    { field: "Date", title: "Date", template: "#=kendo.toString(kendo.parseDate(Date, 'yyyy-MM-dd), 'dd.MM.yyyy')#" }, 
    { field: "Title", title: "Title" }, 
    { field: "", command: ["destroy"], title: " " }]; 

let grid = $("#grid").kendoGrid({ 
    dataSource: this.dataSource, 
    pageable: true, 
    filterable: true, 
    sortable: true, 
    columns: cols, 
    editable: "detail" 
}).data("kendoGrid"); 
grid.one("dataBound", this.onDataBound.bind(this)); 

そして、私の機能onDataBound()に:予想通り

const grid = $("#grid").data("kendoGrid"); 
$(grid.tbody).on("click", "tr", function (e) { 
    const rowData = grid.dataItem(this); 
    const URL = startInfo.ApplicationRoot + "SomeDetailPage?SomeId=" + rowData.get("SomeId"); 
    window.open(URL, '_blank'); 
}); 

これは完璧に動作私はこのような行を追加しています。しかし、あなたが見るように、私は削除ボタン付きの列を持っています。ここに問題があります。削除ボタンをクリックするたびに、確認メッセージが表示されます(実際には[...]を削除してもよろしいですか?)、実際にはの行を正常に削除しますが、行の詳細ページがすぐに開きますボタンをクリックすると

削除ボタンをクリックしたときに詳細ページを開くべきではないことを行に知らせるにはどうすればよいですか?

答えて

0

私は解決策を見つけました。

$(grid.tbody).on("click", "tr", function (e) { 
    if (e.target.tagName == "TD") { 
     const URL = startInfo.ApplicationRoot + "SomeDetailPage?SomeId=" + rowData.get("SomeId"); 
     window.open(URL, '_blank'); 
    } 
}); 

私はボタンをクリックすると、「SPAN」または「A」のいずれかを取得しtagName、:行にクリック機能を結合するとき、私はtagNameを確認することができます。ボタンの外側のすべてが「TD」になります。

0

e.stopPropagation()を使用する必要があります。削除ボタンをクリックすると、イベントも行に渡されません。

+0

削除イベントを行に渡すボタンではなく、ページを開くボタンをボタンに渡す行です。 –

関連する問題