2010-09-27 6 views
0

J'ai déjà demandé comment mettre une datepicker dans une grille, et je n'ai pas eu de réponse. J'ai trouvé que la façon dont je l'ai fait ne fonctionnait pas, parce que l'ID de tous les champs dans la même colonne était le même. Donc quand j'ai mis une date, seul le premier champ d'une colonne a été mis à jour. J'ai envoyé un message demandant comment définir l'ID d'un champ pour empêcher cela, mais personne ne semblait savoir. Je regarde maintenant la grille JQ Grid et MVC Contrib. Je suis nouveau à la fois et je suis inquiet, il me faudra du temps pour le comprendre. Lequel dois-je utiliser?MVC Grid avec une datepicker - quelle est la meilleure façon?

* EDIT * Voici quelques informations supplémentaires à où je suis À mon avis je regarde foreach et je rends une vue partielle ainsi; J'ai aussi un modèle d'éditeur pour assigner le datepicker au champ de date ainsi;

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %> 
<%:Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" }) %> 

Le problème est que je l'ID pour chaque champ NullableBankHolidayDate dans la grille est la même. Ainsi, lorsque je sélectionne une date, le premier champ de la colonne est mis à jour quel que soit celui que je choisis.

Répondre

1

Vous pouvez faire ce que vous avez initialement besoin avec JQuery et une grille standard. Définissez un attribut de classe sur vos zones de texte que vous souhaitez mettre à jour, puis définissez jquery pour ajouter un marqueur de date sur ces classes, plutôt que sur l'identifiant de l'élément. Par exemple, en supposant que vous utilisez JQuery UI datepicker.

<% foreach (var myObject in Model) { %> 
    <tr> 
     <td><%= Html.TextBox("MyProperty", myObject.MyProperty, new { @class = "date" }) %></td> 
    </tr> 
<% } %> 

<script type="text/javascript"> 
    $(function() 
    { 
     $('.date').each(function() 
     { 
      $(this).removeClass('hasDatepicker').datepicker(); 
     }); 
    }); 
</script> 
+0

Merci pour cela. Je fais quelque chose de similaire pour MVC version 2, voir les nouvelles infos que je viens de poster ci-dessus. Peut-être que je devrais essayer la version 1 à la place? Il semble étrange que je doive faire cela. – arame3333

Questions connexes