2012-09-13 109 views
1

我在ASP.NET MVC 3和Razor中使用jqGrid。在ASP.NET MVC 3中的JqGrid列中添加ActionLink剃鬚刀

我正在尋找添加2列jqGrid連同其餘的列。

我想補充的列是

  • 編輯
  • 刪除

這些列值,我想是ActionLink

如何將ActionLink添加到JqGrid的列?

請指導我。

更新1:從@ user1534482的幫助,我試過,但沒有奏效

colModel: [ 
    ... 
    { name: 'Open', formatter: 'prepareLinks' }, 
    ... 
], 

function prepareLinks(cellvalue, options, rowObject) { 
    return "@Html.ActionLink("Open this","Test")"; 

} 

JavaScript錯誤消息:

SyntaxError: missing ; before statement 
[Break On This Error] 

return "<a href="/SomeController/Test">Open this</a>"; 

SomeController (line 92, col 41) 

回答

2

感謝@tpeczek和@ user1534482

我終於得到了解決,

colModel: [ 
    ... 
    { name: 'Open', 
     formatter: function (cellvalue, options, rowObject) { 
      return '<a href="/ControllerName/Test/?myId=' + cellvalue + '">' + "Open" + '</a>'; 
     } 
    }, 
    ... 
], 
5

你應該看看showlinkpredefined formatter

有一個在你的問題沒有任何代碼,所以我不知道你的情況多麼複雜,但一般這樣的代碼應該足夠:

<script type="text/javascript"> 
    jQuery("#gridId").jqGrid({ 
     colNames: [..., 'Edit', 'Delete'], 
     colModel: [ 
      ... 
      {name:'EditAction', formatter:'showlink', formatoptions: { baseLinkUrl: '@Url.Action("Edit")' } }, 
      {name:'DeleteAction', formatter:'showlink', formatoptions: { baseLinkUrl: '@Url.Action("Delete")' } } 
     ], 
     ... 
    }); 
</script> 

行ID將被自動添加(你可以控制如何與idName選項)。如果您需要傳遞一些附加參數,請查看documentation中的addParam選項。

UPDATE

爲了清楚如何在生成最終鏈接,則可以使用以下公式:

"<a " + ((op.target) ? "target=" + op.target : "") + " href=\"" + op.baseLinkUrl + op.showAction + "?" + op.idName + "=" + rowId + op.addParam + "\">" + cellvalue + "</a>" 

opformatoptions對象和cellvalue是用於從數據的列的值你已粘貼到jqGrid。

+0

感謝。但我嘗試過'{name:'打開',formatter:'showlink',formatoptions:{baseLinkUrl:'@Url。Action(「Test」)',idName:'FolderId'}},'但是仍然沒有鏈接產生,只有id在列中被顯示 – Yasser

+0

@亞瑟我已經更新了答案並詳細說明了鏈接是如何生成的,請檢查如果您要爲數據中的列返回正確的值(通常它應該是鏈接的文本)。 – tpeczek

+0

感謝您的鏈接我設法通過使用'formatter'選項來完成這項工作,我也發佈了我最終使用的答案。再次感謝:) – Yasser

2

u可以使用烏爾自己的格式化器一樣

colModel: [ 

     { name: 'colname', formatter: linkbuilder }, 
    ], 

and add function 

function linkbuilder(cellval, opts, rwdat, _act) { 
    return "@Htm.ActionLink()"; 
} 
+0

試圖豬頭...沒有工作 – Yasser

+0

函數調用中格式化:「prepareLinks」不帶引號 – maxs87

+0

不要忘記反斜槓在JS的字符串返回你的雙引號「@ Html.ActionLink(\」打開這個\」,\ 「測試\」)」; – maxs87