2014-06-19 83 views
5

我想在jqgrid的每一行中添加一個超鏈接/按鈕,它會觸發一個定製的javascript函數。厭倦了各種試驗。在jqgrid中自定義函數調用的超鏈接/按鈕

jQuery('#ProductListGrid').jqGrid({ 
    url: '/Product/ProductListGrid', 
    datatype: 'json', 
    multiselect: true, 
    height: 250, 
    autowidth: true, 
    mtype: 'GET', 
    loadComplete: addlinks, 
    colNames: ['ProductId', 'ProductName', 'edit'], 
    colModel: [ 
     { name: 'ProductId', index: 'ProductId',key:true, width: 70, hidden: true, editable: true, size: 5 }, 
     { name: 'ProductName', index: 'ProductName', width: 70, editable: true }, 
     { name: 'edit', index: 'edit', width: 70}, 

    ], 
    pager: jQuery('#ProductListGrid_pager'), 
}); 
function addlinks() { 
    var ids = jQuery("#ProductListGrid").getDataIDs(); 
    alert(ids); 
    for (var i = 0; i < ids.length; i++) { 
     be = "<a href='#' style='height:25px;width:120px;' type='button' title='Slet' onclick=\"ff()\" >Slet</>"; 
     jQuery("#ProductListGrid").jqGrid('setCell', ids[i],'edit','', { act: be }); 
    } 
    //for (var i = 0; i < ids.length; i++) { 
    // jQuery("#ProductListGrid").setCell(i, 'edit', '<a href="#">edit</edit>'); 
    //} 
} 
function ff() 
{ 
    alert("hi"); 
} 

addlinks中的代碼正在執行,但列中沒有任何內容出現。我也嘗試使用自定義格式,但我不能顯示自定義文本「編輯」和鏈接點擊不會觸發js方法。

+0

你有沒有試過格式化程序?如果是的話,你可以分享他們或提供[演示](http://jsfiddle.net)... – GGG

+0

我添加了另一列網格,它顯示鏈接{name:'ProductId',格式化:'showlink',formatoptions: {baseLinkUrl:'/ Product/ProductEdit /',addParam:'&action = edit'}} –

+1

我建議你閱讀[the answer](http://stackoverflow.com/a/14537512/315935)和[this one ](http://stackoverflow.com/a/13765086/315935),它顯示瞭如何使用1)自定義格式化程序在「edit」列中放置一些文本/鏈接/按鈕,以及2)如何使用'beforeSelectRow'回調'onclick'屬性可以通過點擊鏈接/按鈕來執行任何JavaScript代碼... – Oleg

回答

7

你要打電話編輯列格式如下圖所示:

添加formatter: addLink到最後一欄

colModel: [ 
     { name: 'ProductId', index: 'ProductId',key:true, width: 70, hidden: true, editable: true, size: 5 }, 
     { name: 'ProductName', index: 'ProductName', width: 70, editable: true }, 
     { name: 'edit', index: 'edit', width: 70,formatter: addLink}, 

    ] 

添加JavaScript函數:

function addLink(cellvalue, options, rowObject) 
{ 
    //to get row Id 
    alert(options.rowId); 
    // to get product Id 
    alert(rowObject.ProductId); 
    return "<a href='#' style='height:25px;width:120px;' type='button' title='Slet' onclick=\"ff()\" >Slet</a>"; 
} 

更多formatter here信息。

+0

謝謝,這會激發方法。你能幫我怎麼把id傳給函數嗎? –

+0

是否要將productId傳遞給ff函數? –

+0

是的。產品ID和行ID以及,如果我需要任何其他信息 –