2009-03-03 5 views
0

J'ai donc demandé une fonctionnalité pour ajouter des champs à une deuxième ligne de table pour une seule ligne de données sur un GridView. Au début, j'ai cherché à étendre les fonctionnalités de GridView, mais je me suis vite rendu compte que ce serait une tâche énorme et puisque je considère que cette demande est un clin d'œil pour une future fonctionnalité plus importante, elle a été rejetée. Aussi vouloir passer à MVC dans un proche avenir et ce serait jeter le code. Par conséquent, j'ai créé un petit script jquery pour déplacer la cellule vers la ligne suivante de la table.Mise en page avancée Gridview ASP.NET

$(document).ready(function() { 
    $(".fieldAttributesNextRow").each(function() { 
     var parent = $(this).parent(); 
     var newRow = $("<tr></tr>"); 
     newRow.attr("class", $(parent).attr("class")); 

     var headerRow = $(parent).parent().find(":first"); 
     var cellCount = headerRow.children().length - headerRow.children().find(".hide").length; 

     newRow.append($(this).attr("colspan", cellCount)); 
     $(parent).after(newRow); 
    }) 
}); 

Que pensez-vous de cela? Est-ce une mauvaise décision de conception? Je suis en fait très satisfait de la facilité de cette solution. S'il vous plaît fournir vos pensées.

Répondre

0

Il s'agit d'un code côté client, tant que les utilisateurs ne joueront pas avec le gridview après son chargement, cela devrait aller. Cependant, si vous voulez faire n'importe quoi avec des publications, cela peut nécessiter un refactoring.

Qu'essayez-vous de réaliser avec gridview? Rappelez-vous que vous pouvez vous connecter à l'événement de liaison Row et modifier la ligne en cours, mais vous devez le faire.

+0

Que voulez-vous dire "jouer avec la grille"? Ce script prend les cellules marquées avec la classe "fieldAttributesNextRow" et les déplace vers une ligne nouvellement créée sous leur ligne existante. C'est purement un problème de mise en page. J'utilise des publications pour éditer/enregistrer en ligne sur la grille tout fonctionne très bien. – chief7