2017-12-27 8 views
0

Ich habe eine Seite (Steps_Details.cshtml) mit einem jqgrid in MVC, die ich möchte es auf 3 Arten aufrufen und es lädt Daten auf der Unique_code i als Parameter senden 1. Weg) Ich habe eine andere Seite (Rep_Contracts_Steps.cshtml) mit einem jqgrid und ich habe einen Link-Button drin und durch Klicken auf diesen Link-Button und das Senden der Parameterdaten lädt richtig. 2. Weg) ein Link im Hauptmenü ohne Parameter und es lädt alle Daten ohne Filterung. der 3. Weg und der, mit dem ich Problem hatte) Ich habe eine Schaltfläche in einer Seite und ich sende den Parameter. er leitet die Ansicht aber lädt die Seite nicht. (in der Tat ist es nicht die „Get_Contracts_Steps_Details“ Aktion in meinem Homecontroller nicht anrufen, wenn ich btnRep verwenden)Seite nicht geladen auf Schaltfläche klicken, aber funktioniert auf Link-Schaltfläche in jqGrid in MVC

„Steps_Details.cshtml“

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#list').jqGrid({ 
     caption: "گزارش جزییات پیگیری قراردادها", 
     url: '@Url.Action("Get_Contracts_Steps_Details","Home")', 
     datatype: 'json', 
     jsonReader: { 
      root: "Rows", 
      page: "Page", 
      total: "Total", 
      records: "Records", 
      repeatitems: true, 
      userdata: "UserData", 
      id: "Vahed_Descript", 
      cell: "RowCells" 
     }, 
     mtype: 'GET', 
     //columns names 
     colNames: [' ردیف ', 
        ' کد تایید ', 
        ' عنوان تایید ', 
        ' کاربر تایید کننده ', 
        ' تاریخ تایید ', 
        ' توضیحات', 
        ' کاربر ثبت کننده', 
        ' تاریخ ثبت', 
        ' کاربر ویرایش کننده' , 
        ' تاریخ ویرایش' , 
        ' عنوان واحد ', 
        ' کد دبیرخانه ', 
        ' شماره درخواست ', 
        ' شرح درخواست ', 
        ' تاریخ ثبت درخواست', 
        ' مبلغ برآوردی ', 
        '' 
     ], 
     //columns model 

     colModel: [ 
      { name: 'MCS_ID', index: 'MCS_ID', align: 'Right', width: "60px", editable: true, editoptions: { readonly: "readonly" } }, 
      { name: 'MCS_ConfirmId', index: 'MCS_ConfirmId', align: 'Right', width: "60px", editable: false }, 
      { name: 'MWL_Descript', index: 'MWL_Descript', align: 'Right', editable: false }, 
      { name: 'MCS_ConfirmUser', index: 'MCS_ConfirmUser', align: 'Right', editable: true, edittype: 'text' }, 
      { name: 'MCS_ConfirmDate', index: 'MCS_ConfirmDate', align: 'Right', width: "80px", editable: true, edittype: 'text', 
        editrules: { required: true } 
      }, 
      { name: 'MCS_Note', index: 'MCS_Note', align: 'Right', width: "300px", editable: true, edittype: 'text' }, 
      { name: 'MCS_CreatorUserName', index: 'MCS_CreatorUser', align: 'Right', editable: false }, 
      { name: 'MCS_Creation_Date', index: 'MCS_Creation_Date', align: 'Right', width: "80px", editable: false }, 
      { name: 'MCS_EditorUserName', index: 'MCS_EditorUserName', align: 'Right', editable: false }, 
      { name: 'MCS_EditDate', index: 'MCS_EditDate', align: 'Right', width: "80px", editable: false }, 
      { name: 'DESCRIPT', index: 'DESCRIPT', align: 'right', editable: false }, 
      { name: 'DABIR_VAHED_CODE', index: 'DABIR_VAHED_CODE', align: 'right', width: "60px", editable: false }, 
      { name: 'CONTRACT_REQ_ID', index: 'CONTRACT_REQ_ID', align: 'right', width: "100px", editable: false }, 
      { name: 'CONTRACT_REQ_SUBJECT', index: 'CONTRACT_REQ_SUBJECT', align: 'right', editable: false }, 
      { name: 'D_CONTRACT_REQ', index: 'D_CONTRACT_REQ', align: 'right', width: "100px", editable: false }, 
      { name: 'AMNT_TOT_ESTIMATE', index: 'AMNT_TOT_ESTIMATE', align: 'right', width: "100px", editable: false, 
       formatter: 'currency', formatoptions: 
       { decimalSeparator: '.', thousandsSeparator: ',', decimalPlaces: 0 } 
      }, 
      { name: 'MCS_REQ_UNIQUE', index: 'MCS_REQ_UNIQUE', width: 1, align: 'left', hidden: true }, 

     ], 

     pager: $('#pager'), 
     rowNum: 200, 
     rowList: [10, 20, 40, 60, 80, 100, 150, 200, 300], 
     sortname: 'CONTRACT_REQ_SUBJECT', 
     sortorder: 'asc', 
     viewrecords: true, 
     altRows: true, 
     shrinkToFit: false, 
     width: 'auto', 
     height: '300px', 
     hidegrid: false, 
     direction: "rtl", 
     gridview: true, 
     rownumbers: true, 
     footerrow: true, 
     userDataOnFooter: true, 
     scrollerbar: true, 
     loadComplete: function() { 
      $("tr.jqgrow:odd").css("background", "#E0E0E0"); 
     }, 
     loadError: function (xhr, st, err) { 
      jQuery("#rsperror").html("Type: " + st + "; Response: " + xhr.status + " " + xhr.statusText); 
     } 
    , loadonce: true 

    }) 

     .jqGrid('navGrid', "#pager", 
     //enabling buttons 
     { add: false, del: true, edit: true, search: true, refresh: true }, 
     //edit option 
     { 
      url: '@Url.Action("EditSteps_Details", "Home")' , 
      width: 'auto', 
      checkOnUpdate: true, 
      checkOnSubmit: true, 
      closeOnEscape: true, 
      closeAfterEdit: true, 
      beforeShowForm: function (form) { 
       centerDialog(form, $('#list')); 
      }, 
      afterSubmit: function (response, postdata) { 

       $("#list").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid'); 

       return [true, "", '']; 

      }, 

      afterComplete: function (response) { 
       if (response.responseText) { 
       alert(response.responseText); 
       } 
     } 

     }, 

     //delete options 
     { 
      url: '@Url.Action("DeleteSteps_Details", "Home")', reloadAfterSubmit: false 
      , beforeShowForm: function (form) { 
       centerDialog(form, $('#list')); 
      }, 
     }); 



    function centerDialog(form, grid) { 
     var dlgDiv = $("#editmod" + grid[0].id); 
     var parentDiv = dlgDiv.parent(); // div#gbox_list 
     var dlgWidth = dlgDiv.width(); 
     var parentWidth = parentDiv.width(); 
     var dlgHeight = dlgDiv.height(); 
     var parentHeight = parentDiv.height(); 
     var parentTop = parentDiv.offset().top; 
     var parentLeft = parentDiv.offset().left; 
     dlgDiv[0].style.top = Math.round(parentTop + (parentHeight - dlgHeight)/2) + "px"; 
     dlgDiv[0].style.left = Math.round(parentLeft + (parentWidth - dlgWidth)/2) + "px"; 
    } 




    function toolbarSearching() { 
     $("#list").jqGrid('filterToolbar', { 
      autosearch: true, 
      stringResult: false, 
      searchOnEnter: true, 
      defaultSearch: "cn", 
     }); 
    }; 



    $("#list").jqGrid('filterToolbar', { 
     autosearch: true, 
     stringResult: false, 
     searchOnEnter: true, 
     defaultSearch: "cn", 
    }); 

    var maxNameLength = 10; 
    $("input[id=gs_name]").blur(function() { 
     var $th = $(this).closest(".ui-search-toolbar>th"), 
      colIndex = $th[0].cellIndex, 
      $colHeader = $th.parent().siblings(".ui-jqgrid-labels").children("th").eq(colIndex), 
      colHeaderText = $colHeader.children("div").text(); 
     if (this.value.length > maxNameLength) { 
      alert(colHeaderText + ' is longer than ' + maxNameLength + ' characters.'); 
     } 
    }); 
    $('#gs_invdate').datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     showButtonPanel: true 
    }); 


}) 

    </script> 

"Steps_Details" Aktion

[HttpGet] 
    public ActionResult Steps_Details(string REQ_UNIQE) 
    { 
     if (Session["LoginName"] == null) 
     { 
      return RedirectToAction("Index", "Home"); 
     } 
     else 
     { 
      if (REQ_UNIQE != null) 
      { 

       if (REQ_UNIQE != "") 
       { 
        Session["REQ_UNIQE"] = REQ_UNIQE.ToString(); 
       } 
      } 
       return View(); 
     } 
    } 

"Taste und die Dropdownlist, die ich den Wert als Parameter senden"

<div class="form-group"> 
@Html.DropDownListFor(model => model.Req_Unique, (SelectList)ViewBag.Contract_Req_Sub_List, "انتخاب", new { @class = "form-control", @id = "ddlContrReqSub", @onchange = "javascript:GetWork_Level(this.value);" }) 
    <input type="button" name="submit" value="گزارش" id="btnRep" class="w3-button w3-MyDarkBlue w3-padding-large w3-margin-bottom" /> 
     </div> 

"Javascript-Code für btnRep"

$(document).ready(function() { 
      $("#btnRep").click(function() { 
       var REQ_UNIQE = $("#ddlContrReqSub").val(); 

       $.ajax({ 
        url: "/Home/Steps_Details", 
        type: "GET", 
        data: { REQ_UNIQE: REQ_UNIQE }, 

       }); 
      }); 
     }); 

"Get_Contracts_Steps_Details Aktion in Homecontroller"

[HttpGet] 
    public ActionResult Get_Contracts_Steps_Details(JqGridRequest request) 
    { 
     using (rw_mis_dbEntities dc = new rw_mis_dbEntities()) 
     { 

      if (Session["REQ_UNIQE"] != null) 
      { 
      var list = dc.MVC_REP_Contracts_Steps_Details_By_Req_Unique(Security.SharedMembers.shrd_Year_Abbr, Security.SharedMembers.shrd_Vahed_Id, Security.SharedMembers.shrd_User_Id, "", "", 0, new Guid(Session["REQ_UNIQE"].ToString())).ToList(); 

      var pageIndex = request.page - 1; 
      var pageSize = request.rows; 
      var totalRecords = list.Count; 
      var totalPages = (int)Math.Ceiling(totalRecords/(float)pageSize); 


      var contractsQuery = list.AsQueryable(); 

      contractsQuery = new JqGridSearch().ApplyFilter(contractsQuery, request._search, request.searchField, request.searchString, 
                 request.searchOper, request.filters, this.Request.Form); 


      if (string.IsNullOrWhiteSpace(request.oper)) 
      { 
       contractsQuery = contractsQuery 
            .Skip(pageIndex * pageSize) 
            .Take(pageSize); 
      } 
      else if (request.oper == "excel") 
      { 
       contractsQuery = contractsQuery 
            .Skip(pageIndex * pageSize); 
      } 

      var contractsList = contractsQuery 
           .OrderBy(request.sidx + " " + request.sord) 
           .Skip(pageIndex * pageSize) 
           .Take(pageSize) 
           .ToList(); 

      var jqGridData = new JqGridData 
      { 
       UserData = new // نمايش در فوتر 
       { 
        Name = "جمع صفحه" 
       }, 
       Total = totalPages, 
       Page = request.page, 
       Records = totalRecords, 
       Rows = (contractsList.Select(Contract => new JqGridRowData 
       { 
        Id = Convert.ToInt32(Contract.MCS_ID), 
        RowCells = new List<string> 
               { Contract.MCS_ID.ToString(), 
                Contract.MCS_ConfirmId.ToString(), 
                Contract.MWL_Descript, 
                Contract.MCS_ConfirmUser, 
                Contract.MCS_ConfirmDate.ToString() , 
                Contract.MCS_Note , 
                Contract.MCS_CreatorUserName.ToString() , 
                Contract.MCS_CreationDate.ToString() , 
                Contract.MCS_EditorUserName.ToString() , 
                Contract.MCS_EditDate .ToString() , 
                Contract.VAHED_DESCRIPT , 
                Contract.DABIR_VAHED_CODE, 
                Contract.CONTRACT_REQ_ID , 
                Contract.CONTRACT_REQ_SUBJECT , 
                Contract.D_CONTRACT_REQ , 
                Contract.AMNT_TOT_ESTIMATE.ToString() , 
                Contract.MCS_REQ_UNIQUE.ToString() 
                } 
       })).ToList() 
      }; 
      Session["REQ_UNIQE"] = null; 
      return Json(jqGridData, JsonRequestBehavior.AllowGet); 


      } 

       else 
       { 
      var list = dc.MVC_REP_Contracts_Steps_Details(Security.SharedMembers.shrd_Year_Abbr, Security.SharedMembers.shrd_Vahed_Id, Security.SharedMembers.shrd_User_Id, "", "", 0).ToList(); 


      var pageIndex = request.page - 1; 
      var pageSize = request.rows; 
      var totalRecords = list.Count; 
      var totalPages = (int)Math.Ceiling(totalRecords/(float)pageSize); 


      var contractsQuery = list.AsQueryable(); 

      contractsQuery = new JqGridSearch().ApplyFilter(contractsQuery, request._search, request.searchField, request.searchString, 
                  request.searchOper, request.filters, this.Request.Form); 


      if (string.IsNullOrWhiteSpace(request.oper)) 
      { 
       contractsQuery = contractsQuery 
            .Skip(pageIndex * pageSize) 
            .Take(pageSize); 
      } 
      else if (request.oper == "excel") 
      { 
       contractsQuery = contractsQuery 
            .Skip(pageIndex * pageSize); 
      } 

      var contractsList = contractsQuery 
            .OrderBy(request.sidx + " " + request.sord) 
            .Skip(pageIndex * pageSize) 
            .Take(pageSize) 
            .ToList(); 


      var jqGridData = new JqGridData 
      { 
       UserData = new // نمايش در فوتر 
       { 
        Name = "جمع صفحه" 
       }, 
       Total = totalPages, 
       Page = request.page, 
       Records = totalRecords, 
       Rows = (contractsList.Select(Contract => new JqGridRowData 
       { 
        Id = Convert.ToInt32(Contract.MCS_ID), 
        RowCells = new List<string> 
               { Contract.MCS_ID.ToString(), 
                Contract.MCS_ConfirmId.ToString(), 
                Contract.MWL_Descript, 
                Contract.MCS_ConfirmUser, 
                Contract.MCS_ConfirmDate.ToString() , 
                Contract.MCS_Note , 
                Contract.MCS_CreatorUserName.ToString() , 
                Contract.MCS_CreationDate.ToString() , 
                Contract.MCS_EditorUserName.ToString() , 
                Contract.MCS_EditDate .ToString() , 
                Contract.VAHED_DESCRIPT , 
                Contract.DABIR_VAHED_CODE, 
                Contract.CONTRACT_REQ_ID , 
                Contract.CONTRACT_REQ_SUBJECT , 
                Contract.D_CONTRACT_REQ , 
                Contract.AMNT_TOT_ESTIMATE.ToString() , 
                Contract.MCS_REQ_UNIQUE.ToString() 
                } 
       })).ToList() 
      }; 
      return Json(jqGridData, JsonRequestBehavior.AllowGet); 

      } 

     } 
    } 

Vielen Dank im Voraus

Antwort

0

Ich habe gerade

<input type="button" name="submit" value="گزارش" id="btnRep" class="w3-button w3-MyDarkBlue w3-padding-large w3-margin-bottom" /> 

Um

<input type="button" name="submit" value="گزارش" id="btnRep" class="w3-button w3-MyDarkBlue w3-padding-large w3-margin-bottom" onclick="location.href='@Url.Action("Steps_Details", "Home")?Req_Unique=' + $('#ddlcontrreqsub').val()" /> 

und es funktionierte

0

Methode Get_Contracts_Steps_Details mit Rückgabetyp ist ActionResult. Aber jqGrid definiert mit datatype:'json'.

Wenn Get_Contracts_Steps_Details wird json Ergebnis für jqGrid, Verwendung Rückgabetyp String oder JsonResult zurückzukehren.

+0

Vielen Dank für die Antwort. Diese Methode gibt Json zurück (jqGridData, JsonRequestBehavior.AllowGet); . Außerdem funktioniert es richtig, wenn ich die URL: "/ Home/Steps_Details" von einer anderen Seite mit einem Link-Button in einem jqgrid aufrufen. aber es funktioniert nicht, wenn ich einen Knopf benutze, wie ich in meiner Frage erwähnt habe. – sam

Verwandte Themen