2009-05-31 5 views
3

J'utilise Flexigrid pour afficher des données paginées et cela fonctionne très bien. Maintenant, j'ai besoin d'ajouter des liens vers toutes les lignes ("modifier", "voir", "supprimer") et honnêtement, je n'ai aucune idée de la façon de procéder. Y at-il quelque chose que je pourrais utiliser dès la sortie de la boîte?Flexigrid - Ajout d'une colonne avec des liens

L'idée de base est d'avoir une colonne supplémentaire avec de petites icônes pour ces 3 liens et de ne pas avoir la barre d'outils en haut.

Des idées?

Répondre

5

Je l'ai figuré dehors :)

L'astuce est de simplement mettre le lien directement dans les données renvoyées par le script. Par exemple, cela va créer une ligne avec la première colonne contenant les liens en question:

List<Object> rows = new List<Object>(); 
foreach (var item in results) { 
rows.Add(new { 
    id = item.ID, 
    cell = new string[] { 
     String.Format("<a href='/Account/View/{0}'>view</a>&nbsp;<a href='/Account/Edit/{0}'>edit</a>", item.ID), 
     item.Name, 
     item.Phone 
    } 
} 
var result = new { page = page, total = rowcount, rows = rows }; 
return Json(result); 
2

ne me plaisait pas du fait que le « présentateur » qui construit les données du réseau balisage injecte. J'ai ajouté cette petite extension qui est exécutée sur l'événement "onSuccess". Il transforme la représentation de colonne par défaut en un lien.

(function ($) { 
    $.fn.flexLinkColumn = function (colIndex, url) { 
     if (colIndex === undefined || url === undefined) 
      throw "flexLinkColumn requires colIndex and url"; 

     if ($(this).closest('div.flexigrid').length === 0) 
      throw "flexiLinkColumn only operates on flexilink grids."; 

     $(this).find('tr').each(function (index, tr) { 
      var rowId = $(tr).attr('id'); 
      var itemId = rowId.substring(3); 
      var itemUrl = url + (itemId ? "/" + itemId : ""); 

      var div = $(tr).find('td').eq(colIndex).find('div'); 
      var text = $(div).text(); 
      $(div).html('<a href="' + itemUrl + '">' + text + '</a>'); 
     }); 
    } 
})(jQuery); 
-1

Pour Rails:

Ajouter comme ci-dessous

return_data[:rows] = @countries.collect{|l| { :id => l.id, :cell=>[ 
'%a :href=>'javascript:void(0);'#{l.client_cont_person}', // normal html link 

l.completed_on,l.created_by,l.project_id,l.status 
]}} 
Questions connexes