4

私はフレキシグリッドが初めてです。選択した行の各列の値を取得する方法を教えてください。

各列名 (reportName と reportDescription) を取得するにはどうすればよいですか? 以下のように、//すべてのデータを配列にプッシュしているためです。

以下のコードを使用して、選択した行を取得しています。しかし、それはnullを返しています。同じことで私を助けてもらえますか?

//Column. <br/>


colModel: [
  { display: 'WidgetID', name: 'WidgetID', width: 50, sortable: true, align: 'left', hide: true },
  { display: 'Widget Name', name: 'WidgetName', width: 170, sortable: true, align: 'left' },
  { display: 'IsClientReport', name: 'IsClientReport', width: 50, sortable: false, align: 'left', hide: true },
  { display: 'ClientReportID', name: 'ClientReportID', width: 50, sortable: false, align: 'left', hide: true },
  { display: 'ReportType', name: 'ReportType', width: 280, sortable: true, align: 'left' }
],

$('#grid01').click(function(event){ 
  $('.trSelected', this).each( function(){ 
      console.log( ' rowId: ' + $(this).attr('id').substr(3) + ' IsClientReport: ' + $('td[abbr="IsClientReport"] >div', this).html() + ' sign: ' + $('td[abbr="WidgetID"] >div', this).html() + ' ReportType: ' + $('td[abbr="ReportType"] >div', this).html() ); 
  }); 
});

ありがとう、ポン・クマール・パンディアン

4

5 に答える 5

6

あなたがすでにそれを理解しているかどうかはわかりませんが、同じ状況にいる他の誰かが私のようにあなたの質問に出くわした場合に備えて、この答えをここに残しておきます。

列に「sortable:false」を設定すると、Flexigridによって生成される「td」から「abbr」属性が削除されます。これは、選択した行を取得するための推奨ソリューションを使用できないことを意味します。

この問題を修正するために、flexigrid.jsファイルを自分で変更しました。

Flexigridは以前、列に「名前」があり、「sortable:true」がある場合にのみ「abbr」属性を追加していました。'sortable:true'の条件を削除しました。

これは、列が常にソート可能であることも意味します。これを防ぐために、「sortable」属性を追加しました。これは、列が「sortable:true」の場合にのみ設定されます。

その後、「abbr」がソートの条件として使用されているすべての状況を調べて、「sortable」のチェックに置き換えなければなりませんでした。

それでおしまい。

代わりにこれをダウンロードして使用できるようにしたい場合は、ファイルをmediafireにアップロードしました。非特定の場所での変更が多すぎて、ここでコードの変更を表示できません。必要に応じて、差分以上の説明を提供できます。'sortable:true'はまだ私の修正で機能することに注意してください。

于 2012-10-31T03:09:28.137 に答える
2

同じ問題があり、次のコードを使用して解決しました

 jQuery('#schoolist .trSelected').each( function(){
                alert(jQuery('[abbr="name"]',this).text());

            });

それを関数に追加し、id #schoolist と abbr name を必要な列の名前に置き換えるだけです。

于 2013-07-20T13:50:35.710 に答える
0

FlexiGrid FAQ を参照してください: http://code.google.com/p/flexigrid/wiki/FAQ#Get_selected_row

于 2012-08-13T23:29:24.493 に答える
0

あなたは試すことができます:

$('#grid01').click(function(event){
    $('.trSelected', this).each( function(){
        console.log(
            '  rowId: '  + $(this).attr('id').substr(3) +
            '  name: '   + $('td[abbr="name"] >div', this).html() +
            '  sign: '   + $('td[abbr="sign"] >div', this).html() +
            '  status: ' + $('td[abbr="status"] >div', this).html() 
        );
    });
});

また

CIでflexgridを使用し、カスタムボタンイベントに以下のコードを追加します

function test(com, grid) {  
    if (com == 'Export') {
        var data = ($('.bDiv', grid).html());
        $('.bDiv tbody tr', grid).each(function () {
            console.log('  rowId: ' + $(this).attr('id').substr(3) + '  name: ' + $('td[abbr="name"] >div', this).html() + '  coupon_no: ' + $('td[abbr="coupon_no"] >div', this).html() + '  status: ' + $('td[abbr="status"] >div', this).html());
        });
    }   
}

PHP CI コード:

$buttons[] = array('Export','excel','test');

チェック画面:

ここに画像の説明を入力

于 2013-03-15T00:42:53.413 に答える
0

次の関数を flexigrid.js ソースに追加すると、選択された行の配列が返されます。

$.fn.selectedRows = function (p) {
    var arReturn = [];
    var arRow = [];
    var selector = $(this.selector + ' .trSelected');
    $(selector).each(function (i, row) {
        arRow = [];
        $.each(row.cells, function (c, cell) {
            var col = cell.abbr;
            var val = cell.innerText;
            var idx = cell.cellIndex;

            arRow.push(
                {
                    Column: col,
                    Value: val,
                    CellIndex: idx
                }
                );
        });
        arReturn.push(arRow);

    });
    return arReturn;
};

使用法:

var rows = $('#datagrid').selectedRows();

列名で値を検索

function getColValueByName(cols, colName) {
   var retVal = '';
   var param = $.grep(cols, function (e) {
    var found = e.Column == colName;
    if (found != null && found != undefined & found) {
        retVal = e.Value;
    }
});
   return retVal;
}
于 2013-04-29T15:50:57.647 に答える