如何使用格式化程序将参数发送到操作:MVC 中 jqGrid 4.6.0 中的“showlink”

Posted

技术标签:

【中文标题】如何使用格式化程序将参数发送到操作:MVC 中 jqGrid 4.6.0 中的“showlink”【英文标题】:How to send Parameter to an action, using formatter: 'showlink' in jqGrid 4.6.0 in MVC 【发布时间】:2018-06-11 00:49:50 【问题描述】:

我的 jqGrid 中有一个名为“CONTRACT_REQ_SUBJECT”的列。我想让它成为一个链接,重定向到另一个动作,并向该动作发送参数。我想从这个 jqgrid 的不同列中获取这个参数。当然我希望文本是我从数据库中获得的 CONTRACT_REQ_SUBJECT 的值。

这是我的代码:

  name:'CONTRACT_REQ_SUBJECT',index:'CONTRACT_REQ_SUBJECT',edittype:'select'  , formatter: 'showlink'  , formatoptions:  baseLinkUrl: '/Home/Steps_Details/' , idName: 'CONTRACT_REQ_SUBJECT'    ,  

一切正常,我只是无法将参数发送到操作。 也许它可以与“addParam:”一起使用,但我不知道如何使用它。

在此先感谢...

更新问题:

@Oleg 感谢您在 cmets 中的解决方案,但我无法解决这个问题。所以我决定用另一种方式来做,比如下面的代码:

   name:'CONTRACT_REQ_SUBJECT',index:'CONTRACT_REQ_SUBJECT',edittype:'select'  , formatter: 'showlink'  , formatoptions:  baseLinkUrl: '/Home/Steps_Details/' , idName: 'CONTRACT_REQ_SUBJECT'  , addParam : "Contract_Req_Id= 123"    , 

现在的问题是,我想将当前行的“CONTRACT_REQ_ID”的值发送给我的控制器,而不是 123(在我上面的代码中),但不知道该怎么做。

有没有办法将“CONTRACT_REQ_ID”保存到变量中,然后将变量作为参数发送给我的操作?

也许是这样的:

var myGrid = $('#list'),
selRowId = myGrid.jqGrid ('getGridParam', 'selrow'),
celValue = myGrid.jqGrid ('getCell', selRowId, 'CONTRACT_REQ_ID');

但我不知道将它放在我的代码中的什么位置。 我的代码是:

 <script type="text/javascript">
$(document).ready(function () 
    $('#list').jqGrid(
        caption: "گزارش پیگیری قراردادها",
        url: '@Url.Action("Get_Contracts_Steps","Home")',
        datatype: 'json',
        jsonReader: 
            root: "Rows",
            page: "Page",
            total: "Total",
            records: "Records",
            repeatitems: true,
            userdata: "UserData",
            id: "Vahed_Descript",
            cell: "RowCells"
           // ,  data:  REQ_UNIQE: "REQ_UNIQE" ,
        ,
        mtype: 'GET',

        //columns names
        colNames: [' عنوان واحد ',
                            ' کد دبیرخانه ',
                            ' شماره درخواست ',
                            ' شرح درخواست ',
                            ' مبلغ برآوردی ',
                            ' تاریخ ثبت درخواست',
                            ' تاریخ تایید مدیر اجرایی ',
                            ' تاریخ تایید قائم مقام / معاونت ',
                            ' تاریخ ارسال درخواست به تدارکات ',
                            ' تاریخ اخذ استعلام ',
                            ' تاریخ ارسال پاکات قیمت',
                            ' تاریخ تایید بودجه- درخواست ',
                            ' تاریخ بازگشایی پاکات',
                            'تاریخ تایید صورت جلسه استعلام ',
                            ' تاریخ نامه احراز صلاحیت ',
                            ' تاریخ اخذ مدارک  ',
                            'تاریخ تهیه پیش نویس قرارداد ',
                            'تاریخ ارسال پیش نویس به دفتر  IT',
                            'تاریخ تایید پیش نویس توسط معاون',
                            'تاریخ تایید پیش نویس توسط مدیر',
                            ' تاریخ ثبت پیش نویس در سامانه کتاب ما ',
                            ' تاریخ تایید بودجه-پیش نویس ',
                            'تاریخ ارسال به ممیزی ',
                            'تاریخ تایید ممیزی',
                            'تاریخ تهیه نسخ قرارداد',
                            'تاریخ امضای شرکت',
                            'تاریخ امضاو ابلاغ قرارداد',
                            'شماره قرارداد ',
                            '',
                            ' نمایش جزییات ' 
        ],
        //columns model

        colModel: [
             name: 'DESCRIPT', index: 'DESCRIPT', align: 'right'  ,
             name: 'DABIR_VAHED_CODE', index: 'DABIR_VAHED_CODE', align: 'right' ,
             name: 'CONTRACT_REQ_ID', index: 'CONTRACT_REQ_ID', align: 'right' ,

             name: 'CONTRACT_REQ_SUBJECT', index: 'CONTRACT_REQ_SUBJECT', edittype: 'select' 
                , formatter: 'showlink'
                , formatoptions: 
                    baseLinkUrl: '/Home/Steps_Details/', addParam: '&CONTRACT_REQ_ID=123' , idName: 'CONTRACT_REQ_SUBJECT'
                   
            ,
             name: 'AMNT_TOT_ESTIMATE', index: 'AMNT_TOT_ESTIMATE', align: 'center',  formatter: 'currency',
                formatoptions:
                  decimalSeparator: '.', thousandsSeparator: ',', decimalPlaces: 0  
            ,
             name: 'Req_Creation_Date', index: 'Req_Creation_Date', align: 'center'   ,
             name: 'Req_Exec_Confirm', index: 'Req_Exec_Confirm', align: 'center'  ,
             name: 'Req_Moavenat_Cnfrm', index: 'Req_Moavenat_Cnfrm', align: 'center'  ,
             name: 'SendToTadarokat', index: 'SendToTadarokat', align: 'center' ,
             name: 'GotEstelam', index: 'GotEstelam', align: 'center' ,
             name: 'SendPricePockets', index: 'SendPricePockets', align: 'center' ,
             name: 'Req_Budg_Cnfrm', index: 'Req_Budg_Cnfrm', align: 'center' ,
             name: 'OpenPockets', index: 'OpenPockets', align: 'center' ,
             name: 'ConfirmedEstelamSuratJalase', index: 'ConfirmedEstelamSuratJalase', align: 'center' ,
             name: 'EhrazSalahiatConfirmed', index: 'EhrazSalahiatConfirmed', align: 'center' ,
             name: 'GotDocs', index: 'GotDocs', align: 'center' ,
             name: 'Pre_Contract_Prepared', index: 'Pre_Contract_Prepared', align: 'center' ,
             name: 'sendprecontrtoIT', index: 'sendprecontrtoIT', align: 'center' ,
             name: 'PreContrConfirmed_Moaven', index: 'PreContrConfirmed_Moaven', align: 'center' ,
             name: 'PreContrConfirmed_Modir', index: 'PreContrConfirmed_Modir', align: 'center' ,
             name: 'SavePreCntrInKetabMa', index: 'SavePreCntrInKetabMa', align: 'center' ,
             name: 'Pre_BudgtCnfrm', index: 'Pre_BudgtCnfrm', align: 'center' ,
             name: 'SendToMomayeziDate', index: 'SendToMomayeziDate', align: 'center' ,
             name: 'Pre_MomayzCnfrm', index: 'Pre_MomayzCnfrm', align: 'center' ,
             name: 'ContrVersionsPreparedDate', index: 'ContrVersionsPreparedDate', align: 'center' ,
             name: 'CompanySignedVersionsDate', index: 'CompanySignedVersionsDate', align: 'center' ,
             name: 'ContrSignedDate', index: 'ContrSignedDate', align: 'center' ,
             name: 'CONTR_NO', index: 'CONTR_NO', align: 'center' ,
             name: 'REQ_UNIQE', index: 'REQ_UNIQE', width: 1, align: 'left', hidden: true ,

             name: 'Link', formatter: function (cellvalue, options, rowObject) 
                var x = '@html.ActionLink("جزییات", "Steps_Details", "Home", new  REQ_UNIQE = "id" , new  @style = "color:Blue;font-weight:bold;" )';
                return x.replace("id", rowObject[28]);
            , align: 'center', width: 150,editurl: ' / Home / Steps_Details / '
            , 

       ],

    pager: $('#pager'),
    rowNum: 300,
    rowList: [10, 20, 40, 60, 80, 100, 150, 200, 300, 400, 500, 600, 800, 1000, 1200],
    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",
         
             edit: false, add: false, del: false, search: true,   refresh: true
         )


      .jqGrid('navButtonAdd', '#pager', 
          caption: "", buttonicon: "ui-icon-print", title: "خروجي پي دي اف",
          onClickButton: function () 

              $("#list").jqGrid('excelExport',  url: '@Url.Action("Get_Contracts_Steps", "Home")' );
          
      )

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

)

【问题讨论】:

请包括总是信息,您使用的jqGrid的版本以及jqGrid的fork (@987654321 @、商业 Guriddo jqGrid JS 或版本 /Home/Steps_Details/aaa,其中aaa 是同一行的'CONTRACT_REQ_ID' 列中的值。如果使用我开发的“免费 jqGrid”分支,我可以轻松展示如何做到这一点。 @Oleg 非常感谢您的回答。正如你上面提到的,我已经编辑了我的问题的标题。我正在使用 jqgrid 4.6.0 。正如你告诉我的那样,我尝试了 /Home/Steps_Details/aaa (在这个版本中),但它没有用。你能告诉我我该怎么做吗?谢谢 jqGrid 4.6.0 已经很老了(快 4 年了),很长一段时间都不支持它。复古版的formatter: 'showlink' 不允许您创建带有/Home/Steps_Details/aaa 之类的URL 的链接,其中aaa 不是const。如果你真的必须使用旧的 jqGrid 版本,你必须使用custom formatter。 我建议您考虑升级到免费 jqGrid 的当前版本 (4.15.2)。您可以看到 here 在 4.6.0 之后发布了近 2000 个提交。我尝试保持与旧版本的 jqGrid 兼容的免费 jqGrid 叉。因此,您可能不需要在迁移开始时更改 JavaScript。之后,我建议您阅读 the article 一些 wiki 文章和自述文件以了解新功能。 我现在出差,一整天都在客户那里。我会试着在晚上从酒店读你的问题...... 【参考方案1】:

我是这样做的:

     name: 'CONTRACT_REQ_SUBJECT', index: 'CONTRACT_REQ_SUBJECT', edittype: 'select' 
           , formatter: 'showlink'  , formatoptions: 
                    baseLinkUrl: '/Home/Steps_Details/', addParam: '&REQ_UNIQE=' , 
                      idName: 'CONTRACT_REQ_SUBJECT'
                  

【讨论】:

以上是关于如何使用格式化程序将参数发送到操作:MVC 中 jqGrid 4.6.0 中的“showlink”的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数发送到嵌入式 Flutter Web 应用程序?

如何将 jchararray 作为参数发送到 C 函数

如何使用烧瓶将多个参数发送到路由?

json swift ios - 将参数发送到 php-sql

如何将数组作为参数发送到iOS中的json服务

如何将xml参数发送到WCF?