2013-04-29 3 views
0

J'ai des formateurs qui fonctionnent pour les dates et les nombres. Mon formateur pour un lien fonctionne seulement à mi-chemin pour une raison quelconque. Tout ce que je reçois dans ma grille sont des liens comme celui-ci:jqgrid showLink ne fonctionne pas

?id=1 

Lorsque le réglage baseLinkUrl n'est pas utilisé (ou inclus) dans l'URL.

Voici mon JavaScript:

$(function() { 
    $("#d5d02a55-ba5e-46f2-a64a-05fd7870b273_list") 
     .jqGrid({ 
     url: '/jqgrid2/getDataJson', 
     datatype: 'json', 
     mtype: 'GET', 
     colNames: ['Inv No', 'Date', 'Amount', 'Tax', 'Total', 'Notes'], 
     colModel: [{ 
       "name": "invid", 
       "index": "invid", 
       "width": 55, 
       "formatter": "showlink", 
       "formatteroptions": { 
        "baseLinkUrl": "jsp/samplePage.jsp", 
        "target": "_blank", 
        "idName": "invid" 
       } 
      }, { 
       "name": "invdate", 
       "index": "invdate", 
       "width": 90, 
       "formatter": "date", 
       "formatteroptions": { 
        "srcformat": "yyyy-MM-dd", 
        "newformat": "MM/dd/yyyy" 
       } 
      }, { 
       "name": "amount", 
       "index": "amount", 
       "width": 80, 
       "align": "RIGHT", 
       "formatter": "number", 
       "formatteroptions": { 
        "decimalPlaces": 2 
       } 
      }, { 
       "name": "tax", 
       "index": "tax", 
       "width": 80, 
       "align": "RIGHT", 
       "formatter": "number", 
       "formatteroptions": { 
        "decimalPlaces": 2 
       } 
      }, { 
       "name": "total", 
       "index": "total", 
       "width": 80, 
       "align": "RIGHT", 
       "formatter": "number", 
       "formatteroptions": { 
        "decimalPlaces": 2 
       } 
      }, { 
       "name": "note", 
       "index": "note", 
       "width": 150, 
       "sortable": false 
      } 
     ], 
     pager: '#d5d02a55-ba5e-46f2-a64a-05fd7870b273_pager', 
     rowNum: 5, 
     rowList: [5, 10, 25, 50], 
     sortname: 'invid', 
     sortorder: 'asc', 
     viewrecords: true, 
     multiselect: false, 
     gridview: true, 
     caption: '', 
     height: 'auto', 
     jsonReader: { 
      root: 'data', 
      page: 'currentPage', 
      total: 'totalPages', 
      records: 'totalRecords', 
      repeatitems: false, 
      id: 'id' 
     } 
    }); 
}); 

Et mes données:

{ "currentPage" : "1", 
    "data" : [ { "amount" : 1000.0, 
     "invdate" : "2013-04-01 00:00:00", 
     "invid" : 1, 
     "note" : "No notes", 
     "tax" : 60.0, 
     "total" : 1060.0 
     }, 
     { "amount" : 200.0, 
     "invdate" : "2013-04-02 00:00:00", 
     "invid" : 2, 
     "note" : "", 
     "tax" : 12.0, 
     "total" : 212.0 
     }, 
     { "amount" : 500.0, 
     "invdate" : "2013-04-03 00:00:00", 
     "invid" : 3, 
     "note" : "", 
     "tax" : 30.0, 
     "total" : 530.0 
     }, 
     { "amount" : 400.0, 
     "invdate" : "2013-04-03 00:00:00", 
     "invid" : 4, 
     "note" : "Some notes", 
     "tax" : 24.0, 
     "total" : 424.0 
     }, 
     { "amount" : 200.0, 
     "invdate" : "2013-04-04 00:00:00", 
     "invid" : 5, 
     "note" : "", 
     "tax" : 12.0, 
     "total" : 2012.0 
     } 
    ], 
    "limitRows" : "5", 
    "totalPages" : "3", 
    "totalRows" : "11" 
} 

Répondre

1

Les données qui retourne le serveur ne contient pas "id" propriété. Si la colonne invid jouer le rôle de id dans votre grille vous devez d'abord changer id: 'id' en jsonReader à id: 'invid' et secondes (en général, il est une alternative, mais je recommande d'utiliser les deux) pour ajouter key: true propriété à la définition de la colonne invid. Le prochain problème important: vous utilisez formatteroptions au lieu de formatoptions. Ainsi, la plupart des paramètres que vous utilisez seront ignorés maintenant.

Encore un problème: vous utilisez des valeurs incorrectes pour formatoptions de formatter: "date". Vous devez fournir jqGrid les données au format PHP au lieu de plus commun décrit par exemple here. Si vous voulez ouvrir grid.locale-en.js (voir here), vous trouverez quelques exemples de dates d'utilisation et quelques liens qui pourraient vous être utiles.

+0

J'ai corrigé ma faute d'orthographe pour les options de format, changé les formats de date et tout semble fonctionner. Génial! Je n'ai pas apporté la modification à jsonReader pour l'ID, et les URL sont en cours de rendu OK. Je me demande pourquoi c'est? –

+0

@MichaelSobczak: Avez-vous inclus la propriété «key: true»? Avez-vous vérifié que vous avez des identifiants corrects sur la deuxième page? Si aucun identifiant n'est trouvé dans la grille, les valeurs 1, 2, 3, ... (comme vos identifiants de la première page) seront utilisées par défaut. – Oleg

+0

Mes données d'échantillon avaient des ID de 1, 2, 3, donc mon test n'était pas valide. Laissez-moi essayer d'ajouter la propriété "key" et aussi d'ajouter une ligne avec un ID qui est quelques éléments après le dernier actuellement dans la table, pour être sûr que les choses marchent bien. Merci pour le conseil! –