2012-08-08 6 views
0

데이터를 제외하고 동일한 두 개의 jqGrid ("in_table"및 "out_table")가 있습니다. this post에서받은 도움 덕분에 이제 맞춤 설정이 가능한 버튼을 추가하는 방법을 알게되었습니다. 버튼을 누르면 테이블에서 행을 삭제하고 다른 행에 추가하고 싶습니다.하나의 jqGrid에서 행을 삭제하고 다른 행에 추가하십시오.

다음 코드는 버튼을 눌렀을 때 호출되며 예측할 수 없습니다. 잠시 동안 작동 한 다음 작동을 멈 춥니 다.

Uncaught TypeError: Cannot read property 'name' of undefined 

코드 :
콘솔에 오류가 표시

function sign_in_out_action(myself,rowid,icol,cellcontent,e){ 
    var this_row = myself.getRowData(rowid); 
    if(in_out_button_content(cellcontent)== "In"){ 
    alert('Signing OUT'); 
    this_row.in_out = "Out"; 
    $('#out_table').jqGrid('addRowData',1,this_row); 
    myself.delRowData(rowid); 
    } 
    else{ 
    if(in_out_button_content(cellcontent)== "Out"){ 
     alert('Signing in'); 
     this_row.in_out = "In"; 
     $('#in_table').jqGrid('addRowData',1,this_row); 
     myself.delRowData(rowid); 
    } 
    else{ 
     alert("what? "+in_out_button_content(cellcontent)); 
    } 
    } 

그것은 삭제하고 데이터를 추가하는 것이 매우 간단 보인다. 내가 뭘 잘못하고 있는지에 대한 통찰력을 주셔서 감사합니다.

답변

0

두 개의 함수를 정의 할 수 있습니다. 하나는 격자에 행을 추가하고 다른 하나는 격자 행을 삭제하는 것입니다.

그런 다음 맞춤 검색 버튼에 클릭 기능을 추가 할 수 있습니다.

// delete row 
function deleteRow(tableId, rowId) { 
     $('#' + tableId).jqGrid('delRowData', rowId); 
     return false; 
} 


    var index = 999; 
// add a row 
    function addRow(tableId, c1, c2) { 
     var datarow = { Id: c1, Name: c2 }; 

     var lastsel2 = index; 
     index++; 
     var su = jQuery('#' + tableId).addRowData(lastsel2, datarow, 'last'); 
     if (su) { 
      jQuery('#' + tableId).jqGrid('editRow', 0, true); 
     } 
    } 

C1, C2 열 값은 다음과 같습니다. (당신은 C1, C2, C3, C4를 정의 할 수 있습니다대로, 다섯 개의 열이있을 수 있습니다, C5).

다음 코드는 셀 값을 얻기위한 것입니다 :

var c1 = $('#' + tableId).getCell(rowId, 'Id'); 
var c2 = $('#' + tableId).getCell(rowId, 'Name'); 
+0

난 당신이 셀을 얻고있는 것을 볼 수는 getCell 방법을 사용하여, 하나씩 값. 그런데 왜 그것이 필요한 것입니까? 내 라인은 안됩니다 : var this_row = myself.getRowData (rowid); 한 번에 모든 행 데이터의 객체를 가져 옵니까? 또한 코드에서 'id'및 'index'는 무엇입니까? 그것들은 지구 적입니까? 내 문제를 살펴 줘서 고마워! – jpl

+0

나쁜 코드에 대해 유감입니다. 인덱스는 전역 값이고, id 변수는 필요하지 않습니다. 그리고 여기에서는 999로 인덱스를 그리드에서 최대 ID 대신 선언했습니다. 또한 "GetMaxId()"와 같은 고유 한 함수를 작성하여 하나의 그리드에서 다른 행과 다른 ID를 얻을 수 있습니다. –

관련 문제