2016-03-23 84 views
0

情況:我的應用程序執行AJAX請求,收到的數據顯示在下面的JQgrid中。 listData(data)success回撥此ajax請求的函數,按鈕放置在每行jqgrid不會觸發Onclick事件?

data是從請求接收的JSON數據。

buildJqGrid是一個自定義函數,它調用表和div html元素上的.jqgrid()

buttonFormatter是我列名爲自定義格式Action

function listData(data) { 
    var containerName = 'datatablea3', 
     columnNames = ["Name", 
      "Email", 
      "Language", 
      "Office", 
      "alter email", 
      "Action" 
     ], 
     columnModels = [{ 
      name: 'Name', 
      index: 'Name', 
      width: '200px' 
     },{ 
      name: 'Email', 
      index: 'Email', 
      width: '200px' 
     }, { 
      name: 'Language', 
      index: 'Language', 
      width: '200px' 
     }, { 
      name: 'Office', 
      index: 'Office', 
      width: '200px' 
     }, { 
      name: 'AlterEmail', 
      index: 'AlterEmail', 
      width: '200px' 
     }, { 
      name: 'action', 
      width: '200px', 
      formatter: buttonFormatter 
     }], 
     sortColumnName = 'Name', 
     caption = "Employees", 
     rowNum = 25, 
     pager = '#pager2a3', 
     grouping = false, 
     groupingView = {}, 
     rowList = [25, 50, 100]; 

    buildJqGrid(containerName, data, columnNames, columnModels, 
      sortColumnName, caption, rowNum, pager, grouping, 
       groupingView, rowList, true, 'asc'); 
} 

問題:當這個JSP運行數據被成功地顯示在jqgrid與視圖按鈕在每個記錄,但是當我點擊查看按鈕什麼也沒有發生!

我在控制檯檢查它顯示「控制格式化」,但點擊查看按鈕時,它不顯示「點擊功能控制」。

我也使用editLink格式化,但仍相同的錯誤,

誰能告訴我爲什麼我的按鈕的onclick事件不點火試過嗎?

+0

我認爲你需要做的的財產以後這樣 '<按鈕的onclick = \\ 「點擊(); \\」>查看'; –

+0

是否可以包含您使用的更完整的JavaScript代碼**(例如'buildJqGrid'的代碼)? jqGrid的哪個版本以及您使用哪個jqGrid的分支? ([免費jqGrid](https://github.com/free-jqgrid/jqGrid)),商業版[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或舊版jqGrid版本<= 4.7 )。你當前的代碼非常髒(例如'width:'200px''應該固定爲數字:'width:200')。綁定到點擊可以用其他方式實現。最好的選擇取決於您使用的叉子和jqGrid的版本。 – Oleg

回答

0

「點擊」已經是一個函數,因此你可以覆蓋它,並且什麼都不會觸發。

試試這個

function buttonFormatter(cellvalue, options, rowObject) 
{ 
console.log("control in button formatter"); 
return '<button onclick=\"clickFunction();\">View</button>'; 
} 
function clickFunction() 
{ 
    console.log("control in click function"); 
    alert("hello"); 
} 

簡單小提琴:https://jsfiddle.net/virginieLGB/5e5LL5po/1/

+0

謝謝你,媽媽!它的工作原理,請你解釋爲什麼我的原代碼不起作用 – varunsinghal65

+0

@ varunsinghal65沒問題:)正如我所說,你重寫了原來的JavaScript「點擊」功能,它調用你想要的功能。如果你重寫它,JavaScript根本不會調用你自己的方法。我不知道我是否足夠清楚,但基本上不會覆蓋:p – VirginieLGB

+0

mam您能否告訴我爲什麼我的退貨聲明不起作用,以及您的意思是「點擊已經是一項功能因此你重寫它,沒有什麼會觸發「 – varunsinghal65

0

嘗試這樣的,我在我的項目也使用相同的功能(JQ網格),嘗試HTML輸入型而非按鈕,

使用您的代碼時,單擊事件正在觸發,但整個網頁正在重新加載。

function buttonFormatter(cellvalue, options, rowObject) { 
 
    if (rowObject.Status != "Not Started") { 
 
     console.log("Zumbaa"); 
 
     var edit = "<input class='Viewbtn' type='button' value='View' onclick=\"ShowMigrationProcess(" + cellvalue + ");\" />"; 
 
     return edit; 
 
    } 
 
    return ''; 
 
}