0

ページにデータを表示するために JQuery グリッドを使用しています。コントローラー アクション メソッドに渡す必要があるフィルターをグリッドに適用するためのチェックボックスのリストがあります。私の問題は、選択したチェックボックスの値が post data を渡す前に正しく取得されても、コントローラーに表示されないことです。興味深いことに、チェックボックスが選択された状態でページをロードしている場合、その場合、値が渡されます。なぜこれが起こっているのか、私は非常に混乱しています。私はどんな助けにも本当に感謝しています。グリッドをバインドするために使用している以下のコードを参照してください。

    function BindGrid() {

        var selectedPriority = [];
        $('#priority input:checked').each(function () {
            selectedPriority.push($(this).val());
        });
        var selectedState = [];
        $('#state input:checked').each(function () {
            selectedState.push($(this).val());
        });
        var selectedAckState = [];
        $('#ackState input:checked').each(function () {
            selectedAckState.push($(this).val());
        });

        var x = convertIntArrayToString(selectedPriority);
        var y = convertIntArrayToString(selectedState);
        var z = convertIntArrayToString(selectedAckState);

        jqDataUrl = "Alarm/LoadjqData";
        // Set up the jquery grid
        //$("#jqTable").jqGrid('clearGridData');
        $("#jqTable").jqGrid({
            url: jqDataUrl,
            datatype: "json",
            mtype: "POST",
            postData: {
                sp: x,
                ss: y,
                sak: z
            },
            cache: false,
            // Specify the column names
            colNames: ["Id", "PointRef", "Value", "AlarmStateName", "AckStateName", "Priority", "AlarmDate"],

            // Configure the columns
            colModel: [
                { name: "AlarmId", index: "AlarmId", width: 70, align: "left" },
                { name: "PointRef", index: "PointRef", width: 200, align: "left" },
                { name: "Value", index: "Value", width: 200, align: "left" },
                { name: "AlarmStateName", index: "AlarmStateName", width: 150, align: "left" },
                { name: "AcknowledgementStateName", index: "AcknowledgementStateName", width: 170, align: "left" },
                { name: "Priority", index: "Priority", width: 100, align: "left" },
                { name: "AlarmDate", index: "AlarmDate", width: 250, align: "left" }
                ],

            // Grid total width and height
            width: 700,
            height: 250,

            // Paging
            toppager: true,
            pager: $("#jqTablePager"),
            rowNum: 10,
            rowList: [5, 10, 20],
            viewrecords: true, // Specify if "total number of records" is displayed

            // Default sorting
            sortname: "AlarmId",
            sortorder: "desc",

            // Grid caption
            caption: "Telemetry Alarms"
        }).navGrid("#jqTablePager",
                { refresh: true, add: false, edit: false, del: false },
                    {}, // settings for edit
                    {}, // settings for add
                    {}, // settings for delete
                    {sopt: ["cn"]} // Search options. Some options can be set on column level
             )
        //.trigger('reloadGrid', [{ page: 1}]); 
             .trigger('reloadGrid');

    }

    function convertIntArrayToString(data) {
        var x='';
        //alert(data.length);
         for(var i=0;i<data.length;i++) {
          x = x + data[i] + ",";
      }
      if (x != '') {
          x = x.substr(0, x.length - 1);
          //alert(x);
      }
      return x.toString();
    }

//Controller action method

 [HttpPost]
        public ActionResult LoadjqData(string sidx, string sord, int page, int rows, bool _search, string searchField, string searchOper,
            string searchString, string sp, string ss, string sak)
        {

            //code ommited.
            return Json(jsonData);
        }

sp、ss、および sak パラメータの値がコントローラに表示されません。

4

1 に答える 1