自定义网格按钮,根据所选行加载ajax内容

时间:2012-10-18 16:13:30

标签: jqgrid struts2 struts2-jquery

我需要在我的网格中创建一个自定义按钮,它将打开一个模态,该模式将根据所选行呈现带有选项的选择字段。

因此用户将选择一行并单击按钮。行ID应作为url参数传递给我的操作,以便它可以进行查询并填充选择字段。

这是我在努力的地方:

navigatorExtraButtons="{
    honorarios:{
        title: 'Consultar honorários do processo',
        caption: 'H',
        icon: 'none',
        onclick: function(){
            var id = jQuery('#processoTable').jqGrid('getGridParam','selrow');
            if (id) {
                var ret = jQuery('#processoTable').jqGrid('getRowData',id);
                // need to pass ret.nrProcesso as param to the URL that will load content into the modal
            } else { alert('Please select a row.');}
        }
    },

使用上面的代码,我可以从所选行中获取所需的ID值。但我不知道如何将其分配给

<s:url... param 

并填充模态...

提前致谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。在这里发帖,希望它可以帮助别人。

我最终使用普通的旧jquery脚本来显示模式而不是jquery-plugin。

只需构建你的动作网址,添加所需的参数并调用ajax函数:

<sj:submit id="consulta_honorarios" value="Consultar Honorários" onClickTopics="honorarios" button="true"/>
<sj:dialog
    id="mydialog" 
    title="Consultar honorários" 
    autoOpen="false" 
    modal="true" 
    dialogClass="ui-jqdialog" 
/>

<script type="text/javascript">
jQuery(document).ready(function(){
    jQuery("#consulta_honorarios").click(function(){
        var actionURL = '<s:property value="%{advprocselecturl}" />';
        var id = jQuery('#processoTable').jqGrid('getGridParam','selrow');
        if (id) {
            var ret = jQuery('#processoTable').jqGrid('getRowData',id);
            actionURL += '?nrProcesso=' + ret.nrProcesso;
            // alert('id='+ret.nrProcesso+' / actionURL='+actionURL);
            jQuery.ajax({
                url: actionURL
            }).done(function(data){
                jQuery('#mydialog').html(data).dialog('open');
            });
        } else { 
            jQuery('<div />').html('Por favor, selecione um registro.').dialog();
        }
    });
});

在你的行动中,你必须声明一个与url参数同名的变量(在我的例子中为nrProcesso),并带有相应的getter和setter。