jQueryGrid没有在ASP.Net MVC中调用URL

时间:2009-08-16 15:34:30

标签: jquery asp.net-mvc

我一直在尝试在我的Asp.Net MVC应用程序中实现jQuery的网格功能。我正在测试XP上的所有内容,所以我启用了mvc扩展(因为我使用的是IIS 5)

我遇到了两个问题。

  1. 我的jquery网格似乎没有被调用 我引用了所有的jquery&使用URL.Content()方法的网格文件 这是我的头脑:
  2.     
          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');
          }); 
        
    

    我的前两个警报开火了。但是一旦进入jGrid函数,第3个警报就不会触发。我认为它可能与URL有关,因为我在控制器中的函数上设置了一个断点,它永远不会被击中。

    我的第二个问题是当我将/Bar.mvc/GridData放入地址栏时,为了查看它是否能找到该功能,它会提示我用Firefox的“保存文件”下载一个json类型的文件... “对话。

    这是我在控制器中的功能:

         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);
        }
    

2 个答案:

答案 0 :(得分:0)

如果第三个警报未激活,则对jqGrid的调用即将消失。使用Firebug或IE 8脚本调试程序查看错误。 “第二个问题”是正确的行为。别担心。当网格调用您的操作时,它将是正确的。

答案 1 :(得分:0)

不确定这是否是实际答案。但我向后退了几步,用jQuery尝试了一些非常简单的东西。

我做了一个简单的.post。但对于URL,我使用了

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

这就是让它发挥作用所需要的一切。因此,当我再次获得机会时,我会在网格上测试它,但我猜它至少是相关的。

但我确实使用了萤火虫来帮助我达到这一点。