0

データを除いて同一の2つのjqGrid("in_table"と"out_table")があります。この投稿で受け取った助けのおかげで、カスタマイズ可能なボタンを追加する方法がわかりました。ボタンが押されたら、テーブルから行を削除して、もう一方の行に追加したいと思います。

次のコードは、ボタンが押されたときに呼び出されますが、予測できません。しばらくの間は機能し、その後は機能しなくなります。
コンソールにエラーが表示されます:

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));
    }
    }

データを削除して追加するのは非常に簡単に思えます。私が間違っていることについての洞察をいただければ幸いです。

4

1 に答える 1

0

2 つの関数を定義できると思います。1 つはグリッドの行の追加、もう 1 つはグリッドの行の削除です。

次に、カスタム ボタンのクリック機能を追加できます。

// 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 を定義できるため、5 つの列を持つことができます)。

次のコードは、セル値を取得するためのものです。

var c1 = $('#' + tableId).getCell(rowId, 'Id');
var c2 = $('#' + tableId).getCell(rowId, 'Name');
于 2012-08-08T06:09:33.107 に答える