加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Controller Action方法仅在第一次获得.它为什么

发布时间:2020-12-16 09:36:29 所属栏目:asp.Net 来源:网络整理
导读:当我单击FilterButton时,它会在每次点击后每次都会点击警报.但是,动作方法GridData只是第一次被击中.你知道为什么吗? $(document).ready(function () { $('#FilterButton').click(function () { alert('button clicked'); var myGrid = jQuery("#list").jqG
当我单击FilterButton时,它会在每次点击后每次都会点击警报.但是,动作方法GridData只是第一次被击中.你知道为什么吗?

$(document).ready(function () {

            $('#FilterButton').click(function () {

                alert('button clicked');

                var myGrid = jQuery("#list").jqGrid({
                    url: '/Data/GridData/',datatype: 'json',mtype: 'POST',......

这是请求的操作方法

[HttpPost]
    public JsonResult GridData(string sidx,string sord,int page,int rows,string species,string methodOfTake,string outputType,string seasons,string years)
    {          

        var results = (from a in db.t_harvest_statistics_elk
                        where a.year == "2008" && a.unit_number == 1
                        orderby a.id
                        select new { a.id,a.year,a.unit_number,a.total_hunters,a.bulls,a.cows }).ToList(); 

        int pageIndex = Convert.ToInt32(page) - 1;
        int pageSize = rows;
        int totalRecords = results.Count();   
        int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);

        var pageResults = results.Skip(pageIndex * pageSize).Take(pageSize);           

        var jsonData = new
        {
            total = totalPages,page,records = totalRecords,rows = (
                from pageResult in pageResults
                select new
                {
                    id = pageResult.id,cell = new[] { 
                                    pageResult.year.ToString(),"Add",pageResult.unit_number.ToString(),pageResult.total_hunters.ToString(),pageResult.bulls.ToString(),"add",pageResult.cows.ToString(),"add"

            }
                }).ToArray()
        };


        return Json(jsonData,JsonRequestBehavior.AllowGet); 
    }

解决方法

jqGrid控件是一个有趣的野兽.

这里发生的是你第一次调用初始化网格,因此首次设置网格将初始化网格所需的数据.这个初始化是调用控制器动作,也是它第一次触及断点的原因.

对于每次后续点击,发生的事情是你正在调用jqGrid()方法,但由于它已经初始化,它忽略了调用,因此没有设置你指定的参数.

你需要做的是调用“setGridParam”方法,它允许你像这样更新jqGrid参数:

jQuery('#list').setGridParam({
                    url: '/Data/GridData/',...
);

更改网格参数后,需要触发刷新,如下所示:

jQuery('#list').trigger("reloadGrid");

这不是最直观的设置,但这是jqGrid的工作方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读