2012-03-12 10 views
4

FilterButtonをクリックすると、毎回、クリックごとに警告が表示されます。しかし、アクションメソッドGridDataは初めて初めてヒットします。なぜなのかご存知ですか?ここでコントローラーアクションメソッドは初めて取得するだけです。なぜもう一度ヒットしないのですか?

$(document).ready(function() { 

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

       alert('button clicked'); 

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

はjqGrid制御が面白い獣で要求されたアクションメソッド

[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", 
            "add", 
            "add" 

      } 
       }).ToArray() 
     }; 


     return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 
+0

アクションメソッドはキャッシュされていますか?あなたの行動方法が初めて呼び出されるのはどういうことですか?アクションメソッドにブレークポイントを設定しましたか? –

+0

こんにちはサメ、はい私はブレークポイントを持っています。それは最初のヒットを得るが、それがヒットしなかった後のすべてのクリックはヒットしない。私は何もキャッシュしていない。 – KeelRisk

+0

あなたの行動方法を投稿できますか? – Raymund

答えて

1

です。

ここで起きているのは、グリッドをに初期化している最初の呼び出しがであるため、グリッドを初めて設定すると、グリッドに必要なデータが初期化されます。この初期化はコントローラのアクションを呼び出すことで、初めてブレークポイントに当たる理由です。

jqGrid()メソッドを呼び出すと、それはすでに初期化されているため、呼び出しを無視しているため、指定したパラメータは設定されません。あなたはグリッドのパラメータを変更した後、あなたがトリガする必要がある、

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

:あなたの代わりに行うために必要なもの

は、あなたがそうのようなjqGridパラメータを更新することができます「setGridParam」メソッドを呼び出していますこのようにリフレッシュする:

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

これは、最も直感的な設定ではありませんが、これはjqGridの仕組みです。

+0

.setGridParam({と 'reloadGrid'ピースを追加しても機能しませんでした)次に、jqGridの後に 'reloadGrid'セクションを追加しました。ボタンをクリックしてください。ありがとう – KeelRisk

+0

申し訳ありませんが、私の答えは少し明確にされている可能性があります。 – lomaxx

関連する問題