2012-12-10 109 views
1

我有一個jqxGrid,我有幾個複選框英寸 我需要做的是找到一個事件,當複選框被改變時觸發。 我曾嘗試:
jqWidget網格捕獲複選框更改

  • changed
  • cellbeginedit
  • cellendedit
  • cellvaluechanged
  • cellvaluechanging

。 一切無濟於事。

我不想在任何單元格發生更改時觸發事件,只是選中此複選框。

關於這可能如何完成的任何想法?
我已經包含下面的代碼。
複選框是「重新證書」線

$("#ModulesGrid").jqxGrid({ 
     width: 890, 
     height: 350, 
     theme: modulesTheme, 
     columnsresize: true, 
     source: dataAdapter, 
     pageable: true, 
     editable: true, 
     columns: [ 
        { text: 'Module Name', datafield: 'modulename', width: 100, editable: false }, 
        { text: 'Optional', datafield: 'Optional', columntype: 'checkbox', width: 100 }, 
        { text: 'Assigned', datafield: 'Assigned', width: 80 , columntype: 'checkbox'}, 
        { text: 'Pass', datafield: 'pass',cellsrenderer: radioRenderer,width: 50, editable: false }, 
        { text: 'NC', datafield: 'nc',cellsrenderer: radioRenderer,width: 50, editable: false }, 
        { text: 'Fail', datafield: 'fail',cellsrenderer: radioRenderer,width: 50, editable: false }, 
        { text: 'Re-Cert', datafield: 'recert', columntype: 'checkbox', width: 50, cellvaluechanged: function(event){alert(1);}}, 
        { text: 'Re-Cert Reason', datafield: 'reason', width: 100, editable: false}, 
        { text: 'Prior Cert', datafield: 'priorcert', width: 50, editable: false } 
       ] 
    }); 

這裏是對API的鏈接:http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxgrid/jquery-grid-api.htm

編輯:它不會讓我標記此jqWidget下爲標籤不存在,我沒有1500個代表。對不起,這是混淆。

回答

2

我在使用這個插件時遇到了類似的問題。

因此,我嘗試通過使用複選框圖像並將事件分配給圖像來將單擊事件分配給元素,而不是內置事件。

而且我注意到,你是不是綁定cellbeginedit或cellendedit事件..

$("#ModulesGrid").bind('cellbeginedit', function (event) { 
    var args = event.args; 
    alert("Column: " + args.datafield + ", 
      Row: " + (1 + args.rowindex) + ", Value: " + args.value); 
}); 

而且從定義中刪除該事件,並將其綁定像上面

{ text: 'Re-Cert', datafield: 'recert', columntype: 'checkbox', width: 50 }, 

UPDATE

如果是這種情況,您可以處理該特定列的cellsrenderer方法..

var columncheckboxRenderer = function(row, column, value) { 
    var html; 
     html = '<span style="margin:4px;float:left" onclick="clickImage(this,' 
       + row + ')"><img alt="selectme" class="image-unchecked" ' 
       + src="../../Images/checkbox_off.png"/></span>'; 

    return html; 
} 

{ text: 'Re-Cert', datafield: 'recert', width: 50, 
      cellsrenderer: columncheckboxRenderer, renderer: header}, 

然後寫出click event的複選框......應該完成這項工作..這是我處理我的需求邏輯的方式。

+0

謝謝Sushanth,我已經刪除了我嘗試過的不同的東西,只是在問題中放置了最新的版本。我的問題是,我只希望爲此特定列捕獲此事件。您提供的解決方案將針對所有更改進行觸發。你認爲有一種方法可以獲得一列的事件嗎? –

+0

@PhilVollhardt ..檢查更新代碼 –

+0

我會試試這個,謝謝Sushanth –

0

我可以找到的最乾淨的方法是連接「cellvaluechanged」。這捕獲了任何單元格值的更改。然後,事件參數會告訴您列名,舊值,新值等。您仍然必須在該行之後獲取行中的某個唯一標識符,例如表格的唯一鍵(例如)。

$("#grid").on("cellvaluechanged", function (event) { 
     var theKey = $("#grid").jqxGrid("getcellvalue", event.args.rowindex, "key"); 
     doSomething(theKey, event.args.newvalue); 
    });