2011-09-05 22 views
6

Sunucuya ulaşacağım ve bazı veriler alabileceğim 2 sütunlu bir JQGrid var, daha sonra sunucudaki filtrelere bağlı olarak bazı dizeleri birleştireceğim ve bunu altyazı olarak ayarlamak istiyorum. Bu filtrelere dayanarak sütun adlarını değiştirmek ister. Sunucudan ActionResult'a dayalı altyazı ve sütun adlarını ayarlamanın bir yolu var mı?JQGrid set başlığı ve sütun adı

cevap

12

Sorunuzu ilginç buluyorum.

Biz basit ızgara ile başlayabilirsiniz

:

$("#list").jqGrid({ 
    url: 'ColumnNamesAndTitelFromServer.json', 
    datatype: 'json', 
    loadonce: true, 
    colNames: ['Name', 'Email'], 
    colModel: [ 
     {name: 'name', width: 100}, 
     {name: 'email', width: 150} 
    ], 
    rowNum: 5, 
    rowList: [5, 10, 20], 
    pager: '#pager', 
    gridview: true, 
    rownumbers: true, 
    sortname: 'name', 
    sortorder: 'asc', 
    caption: 'Just simple local grid', 
    height: 'auto' 
}); 

ve JSON veri:

{ 
    "total": 1, 
    "page": 1, 
    "records": 2, 
    "rows": [ 
     {"id": "id1", "cell": ["John", "[email protected]"]}, 
     {"id": "id2", "cell": ["Michael", "[email protected]"]} 
    ] 
} 

Biz şu sonuçlar

alacak

enter image description here

(the demo bakınız)

Şimdi bizim özel ek bilgilerle JSON verilerini uzatmak:

{ 
    "total": 1, 
    "page": 1, 
    "records": 2, 
    "rows": [ 
     {"id": "id1", "cell": ["John", "[email protected]"]}, 
     {"id": "id2", "cell": ["Michael", "[email protected]"]} 
    ], 
    "userdata": { 
     "title": "Das ist der Titel bestimmt beim Server", 
     "columnNames": { 
      "name": "Die Name", 
      "email": "Die E-Mail" 
     } 
    } 
} 

Sadece userdata başlığı ve Alman dilinde ızgaranın sütun adlarını tanımlamak Yukarıdaki örnekte. okumak için ve userdata biz ızgaraya aşağıdaki loadComplete olay işleyicisi ekleyebilirsiniz kullanmak:

loadComplete: function() { 
    var $grid = $(this), columnNames, name, 
     userdata = $grid.jqGrid('getGridParam', 'userData'); 

    if (userdata) { 
     if (userdata.title) { 
      $grid.jqGrid('setCaption', userdata.title); 
     } 
     if (userdata.columnNames) { 
      columnNames = userdata.columnNames; 
      for (name in columnNames) { 
       if (columnNames.hasOwnProperty(name)) { 
        $grid.jqGrid('setLabel', name, columnNames[name]); 
       } 
      } 
     } 
    } 
} 

Şimdi aynı ızgara irade

enter image description here

benziyor

+0

sayesinde (another demo bakınız) Mükemmel çalıştı – Leoadell

+0

@Leoadell: Rica ederim! – Oleg