2009-08-16 7 views
0

J'ai essayé d'implémenter la fonction de grille de jQuery dans mon application Asp.Net MVC. Je teste tout sur XP maintenant, donc j'ai activé l'extension mvc (puisque j'utilise IIS 5)jQueryGrid n'appelle pas l'URL dans ASP.Net MVC

J'ai rencontré 2 problèmes.

  1. Ma grille jquery ne semble pas être appelée.
    j'ai parlé tous les fichiers de la grille jquery & selon la méthode URL.Content() Voici mon headcontent:
 
    
     jQuery(document).ready(function() { 
     alert('loaded'); 
     alert('starting jquery'); 
      jQuery("#list").jqGrid 
      ({ 
       url: '/Bar.mvc/GridData/', 
       datatype: 'json', 
       mtype: 'GET', 
       colNames: ['Id', 'Votes', 'Title'], 
       colModel: [ 
       { name: 'Id', index: 'Id', width: 40, align: 'left' }, 
       { name: 'Votes', index: 'Votes', width: 40, align: 'left' }, 
       { name: 'Title', index: 'Title', width: 400, align: 'left'}], 
       pager: jQuery('#pager'), 
       rowNum: 10, 
       rowList: [5, 10, 20, 50], 
       sortname: 'Id', 
       sortorder: "desc", 
       viewrecords: true, 
       imgpath: '/scripts/themes/coffee/images', 
       caption: 'My first grid' 
      }); 
      alert('jQuery done'); 
     }); 
    

Mes deux premières alertes incendie. Mais une fois qu'il passe dans la fonction jGrid, la 3ème alerte ne se déclenche pas. Je pense qu'il pourrait être lié à l'URL, parce que j'ai mis un point d'arrêt sur la fonction dans le contrôleur et il ne sera jamais touché.

Mon deuxième problème est quand j'ai placé /Bar.mvc/GridData dans la barre d'adresse, pour voir si elle pourrait trouver la fonction, il me demande de télécharger un fichier de type json avec "Save File" de Firefox. . "dialogue.

Voilà ma fonction dans le contrôleur:

 public ActionResult GridData(string sidx, string sord, int? page, int? rows) 
    { 
     int totalPages = 1; // we'll implement later 
     int? pageSize = rows; 
     int totalRecords = 3; // implement later 

     var jsonData = new 
     { 
      total = totalPages, 
      page = page, 
      records = totalRecords, 
      rows = new[]{ 
       new {id = 1, cell = new[] {"1", "-7", "Is this a good question?"}}, 
       new {id = 2, cell = new[] {"2", "15", "Is this a blatant ripoff?"}}, 
       new {id = 3, cell = new[] {"3", "23", "Why is the sky blue?"}} 
      } 
     }; 
     return Json(jsonData); 
    } 

Répondre

0

Vous ne savez pas si c'est la réponse réelle ou non. Mais j'ai fait quelques pas en arrière et j'ai essayé quelque chose de vraiment simple avec jQuery.

J'ai fait un .post simple. Mais pour l'URL, j'ai utilisé un

<%Html.Action("myControllerFunction")%> 

C'est tout ce qu'il a fallu pour que ça marche. Donc, quand j'aurai une chance, je le testerai sur la grille, mais je suppose que c'est au moins lié.

Mais j'ai utilisé firebug pour m'aider à atteindre ce point.

0

Si la troisième alerte ne se déclenche pas, l'appel à jqGrid est en train de mourir. Utilisez Firebug ou le débogueur de script IE 8 pour voir l'erreur. Le "second problème" est un comportement correct. Ne t'en fais pas pour ça. Lorsque la grille appelle votre action, elle aura raison.