2011-02-17 2 views
2

Ai-je juste manqué quelque chose de simple ici? Sans entrer dans le formatage personnalisé, je voudrais juste utiliser mes valeurs d'ID pour le paramètre ID dans le formateur showlink. Voici un exemple de mon sous-réseau:jqGrid ShowLink Formatter - Paramètre ID personnalisé

subGridRowExpanded: function (subgrid_id, row_id) { 
    var subgrid_table_id = subgrid_id + '_t'; 
    $('#' + subgrid_id).html('<table id="' + subgrid_table_id + '" class="scroll" />'); 
    $('#' + subgrid_table_id).jqGrid({ 
    datatype: 'local', 
    colNames: ['Order Number', 'Request Type', 'Owner', 'Order Status', 'Status Date'], 
    colModel: [{ 
     name: 'orderid', 
     index: 'orderid', 
     width: 150, 
     key: true, 
     formatter: 'showlink', 
     formatoptions: { baseLinkUrl: 'AOFOrderFacilities.aspx', idName: 'orderid' } 
    }, { 
     name: 'type', 
     index: 'type', 
     width: 100 
    }, { 
     name: 'owner', 
     index: 'owner', 
     width: 200 
    }, { 
     name: 'status', 
     index: 'status', 
     width: 150 
    }, { 
     name: 'date', 
     index: 'date', 
     width: 150 
    }], 
    sortname: 'num', 
    sortorder: 'asc', 
    height: 'auto' 
    }); 
    // TODO: Make this into an AJAX call. This is just for demo. 
    var mysubdata = [ 
    { orderid: 'O000', type: 'Data', owner: 'Melanie Martin', status: 'Saved', date: '2/4/2011 11:48:18 AM' }, 
    { orderid: 'O000', type: 'Voice', owner: 'Billy Solomon', status: 'Submitted to TC', date: '2/4/2011 12:03:47 PM' } 
    ]; 
    for (var i = 0; i <= mysubdata.length; i++) 
    jQuery('#' + subgrid_table_id).jqGrid('addRowData', i + 1, mysubdata[i]); 
} 

Lorsque les liens dans la première colonne de la grille sont rendus, ils affichent correctement la valeur orderid que le texte de la colonne (pré-suspendu « O » est intentionnel, et doit être transmise par le système comme cela), mais les liens résultants sont les suivants:

http://localhost/somestuff/AOFOrderFacilities.aspx?orderid=1 
http://localhost/somestuff/AOFOrderFacilities.aspx?orderid=2 

et ainsi de suite, où la valeur du paramètre d'identification est l'indice ordinal de la ligne de grille au lieu de la valeur de consigne à partir de les données. Existe-t-il un moyen facile d'utiliser la valeur des données à la place?

Répondre

2

L'option de format idName du formateur showlink indique seulement que le nom du paramètre dans l'URL dont vous avez besoin. La valeur de l'ID est toujours le rowid. Dans votre exemple, vous utilisez

var mysubdata = [ 
    { orderid: 'O000', type: 'Data', owner: 'Melanie Martin', 
     status: 'Saved', date: '2/4/2011 11:48:18 AM' }, 
    { orderid: 'O000', type: 'Voice', owner: 'Billy Solomon', 
     status: 'Submitted to TC', date: '2/4/2011 12:03:47 PM' } 
]; 
for (var i = 0; i <= mysubdata.length; i++) 
    jQuery('#' + subgrid_table_id).jqGrid('addRowData', i + 1, mysubdata[i]); 

qui donnent ROWID des lignes les valeurs 1,2, mysubdata.length. Le paramètre key:true pour la colonne orderid sera ignoré par la méthode addRowData. Vous pouvez vérifier dans les outils de développement ou dans Firebug quel ID a <tr> éléments de votre grille.

Je vous recommande de modifier le code ci-dessus ou simplement utiliser data:mysubdata comme paramètre supplémentaire de jqGrid au lieu de l'utilisation plus lente ancienne méthode addRowData. Parce que vous avez défini key:true tout devrait fonctionner correctement. Vous pouvez également utiliser localReader:{id:'orderid'} comme paramètre jqGrid supplémentaire.

+0

Ah, je hadn Je n'ai même pas remarqué l'option 'data', je passais juste par quelques exemples sur le site web jqGrid. Il est logique qu'il utilise l'index de 'addRowData' maintenant que vous le mentionnez. Le simple fait de passer le tableau de données en tant qu'option est beaucoup plus logique et fonctionne parfaitement. Merci! – David

+0

@David: Vous êtes les bienvenus! – Oleg

+0

@Oleg: S'il vous plaît, aidez-moi à placer un lien personnalisé de formatage dans [mon exemple] (http://stackoverflow.com/questions/7119297/showlink-custom-formatter-in-jqgrid) – abi1964

1

Je ne sais pas si vous les gars avez résolu ce encore, mais je l'ai eu à envoyer à travers l'id de mon choix en réglant le lecteur de JSON comme suit:

jsonReader: { repeatitems: false, id: "[property whose value you want to pass]" },

Rich

Questions connexes