2011-09-05 13 views
6

Ho un JQGrid con 2 colonne dove arriverò al server e otterrò alcuni dati, quindi concatenerò alcune stringhe in base ai filtri sul server e voglio impostarlo come didascalia e anche vuole cambiare i nomi delle colonne in base a quei filtri. C'è un modo per impostare i nomi delle didascalie e delle colonne in base a ActionResult dal server?JQGrid set didascalia e nome colonna

risposta

12

La tua domanda è interessante.

Possiamo cominciare con la semplice griglia:

$("#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' 
}); 

ei dati JSON:

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

Abbiamo riceveranno i seguenti risultati

enter image description here

(vedi the demo)

Ora estendiamo i dati JSON con il nostro aggiuntive personalizzate informazioni:

{ 
    "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" 
     } 
    } 
} 

Nell'esempio di cui sopra ho appena definisco nel userdata il titolo ei nomi delle colonne della griglia in lingua tedesca. Per leggere e utilizzare il userdata possiamo aggiungere il seguente gestore loadComplete eventi alla rete:

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

Ora, la stessa volontà di griglia assomiglia

enter image description here

(vedi another demo)

+0

grazie ha funzionato perfettamente – Leoadell

+0

@Leoadell: siete i benvenuti! – Oleg