2017-07-16 23 views
0

私はjqgridを持っています。ここで私はcustom_elementを使ってディスプレイをフォーマットしています。jqgrid結合された列とバインドデータを編集する

{ 
      name: 'PDTime', index: 'PDTime', width: 60, editable: true, formatter: timeSpanHMFormatter, edittype: 'text', editoptions: { 
       custom_element: function (value, options) { 
        var elemStr = '<div> <select id="UTTime" name="UTTime" >' 

        for (var i = 0; i < 24; i++) { 
         elemStr = elemStr + '<option value="' + i + '">' + i + '</option>' 
        } 
        elemStr = elemStr + "</select> </div>"; 
        return $(elemStr)[0]; 
       }, 
       custom_value: function (elem, operation, value) { 
        console.log(elem); 

       } 
      } 
     }, 

フォーマッタは時間と分を示すタイムスパン表示です。値 'PDTime'は、時間と分のプロパティを持つオブジェクトです。

function timeSpanHMFormatter(cellvalue, options, rowObject) {   
    if (cellvalue.Hours == 0 && cellvalue.Minutes == 0) 
     return ""; 
    var value = "00:00"; 

    if (cellvalue.Hours.toString().length == 1) 
     value = "0" + cellvalue.Hours 
    else 
     value = cellvalue.Hours 

    if (cellvalue.Minutes.toString().length == 1) 
     value = value + ":0" + cellvalue.Minutes 
    else 
     value = value + ":" + cellvalue.Minutes 

    return value; 
} 

ビューモードでは、値に応じて02:30などと表示されます。私は編集モードでこのPDTimeオブジェクトに値をバインドしたいと思います。

custom_elementは今のところ1時間のドロップダウンを作成し、ドロップダウンの選択値をPDTime.Hoursにバインドしようとしています。これどうやってするの ?

+0

中にエラー、edittype:「カスタム」ではない 'text'質問。 – user3462433

+0

「編集モードでこのPDTimeオブジェクトに値をバインドする」という意味の詳細を教えてください。どの編集モジュールが使用されていますか? –

+0

私はインライン編集を使用しています。バインディングとは、PDTimeの値を入力するときに、PDTime.hoursと分に割り当てることができるということです。たとえば、2つのドロップダウンで2つの値を選択すると、1つはPDTimr.hoursにバインドされ、もう1つは数分にバインドされるため、保存時にポストバックすると、PDTimrオブジェクトにアクセスできます。 – user3462433

答えて

0

カスタム要素については、Guriddo Documentation hereから分かるように、operationをgetに設定してcustom_value関数を定義する必要があります。

ここでのトリックは、このイベントが、操作が取得されたときにオブジェクトを返すことです。データはサーバPDTimeにポストされたときにオブジェクトであること

custom_value: function (elem, oper) { 
    if(oper==='get') { 
     var hour = $("#UTTime", elem).val(); 
     // get the minutes according to your definition 
     var time = $("#UTTime", elem).val(); 
     return {"Hours" : hour, "Minutes": time}; 
    } 
}, 

注: 以下はexsmpleです。あなたはserializeRowDataイベント(look here)このイベントを使用して1、1つまたは複数の値を返すポストを簡素化することができますすることはjqGridイベントで、あなたはこのようにそれを行うことができます。

...jqGrid({ 
.... 
    serializeRowData : function(postdata) { 
     var hours = postdata.PDTime.Hours; 
     var minutes postdata.PDTime.Minutes; 
     posdata.PDTime = hours+":"+minutes; 
     // or what you want data combination 
     return postdata; 
    }, 
... 
関連する問題