【问题标题】:how to reaload a jqgrid on the success of an ajax call如何在ajax调用成功时重新加载jqgrid
【发布时间】:2013-01-07 05:38:38
【问题描述】:

我正在使用 struts 2.3.7、struts2-jquery-grid-plugin-3.5.0 和 hibernate 3.6。 我想在 ajax 调用后重新加载 jqgrid。

我有一个j对话框,里面有三个按钮,点击按钮后,我们需要执行一些操作,例如Ajax调用,然后我必须重新加载jqgrid如何实现。

我的 jDialog

<sj:dialog 
         id="mybuttondialog"
        buttons="{
                'Approove':function() { approoveButton(); },
                'Cancel':function() { cancelButton(); },
                'Deny':function() { denyButton(); }
                }"
        autoOpen="false"
        modal="true"
        title="Assign Issues"
        width="375"
        resizable="false"
        draggable="true"
        closeTopics="closeThisDialog"
>

我的 jqGrid 是这样的

 <div id="targetDivToRefresh">
    <sjg:grid
        id="gridtable"
        caption="Issue-Summary"
        dataType="json"
        href="%{remoteurl}"
        pager="true"
        gridModel="gridModel"
        rowList="10,15,20"
        rowNum="15"
        rownumbers="true"
        reloadTopics="reloadGrid"
    >
        <sjg:gridColumn name="issue_id"  id="issueId"  index="id" title="Issue-ID" formatter="integer"  sortable="false"/>
        <sjg:gridColumn name="issue_description" index="id" title="Issue-Details"  sortable="false"/>
        <sjg:gridColumn name="issue_raised_date" index="date" title="Issue-Date"  formatter="date"  sortable="false"/>

        <sjg:gridColumn name="issue_id"   index="issues" title="Action" sortable="false" formatter="formatLink"/>
        <sjg:gridColumn name="assigned"  index="assigned" title="Assigned To"  sortable="false"/>
    </sjg:grid>
        </div>

点击列“Acton”后,j对话框打开,我必须点击任何按钮,即批准,拒绝按钮来执行一些操作。完成 ajax 调用后,我必须重新加载 jqgrid。我正在使用 customFormatter 作为

function formatLink(cellvalue, options, rowObject) {

                      var issueId=rowObject.issue_id;

                        return "<a href='#' onClick='javascript:openDialog("+issueId+")'>" + issueId+ "</a>";

                }
                function openDialog(issue) {

                        global_id=issue;
                        $("#mybuttondialog").dialog().text('Your are going to assign Issue-Id:' + issue);
                        $("#mybuttondialog").dialog('open');

                }

但是我尝试过这样的方法来重新加载网格:

$("#gridtable").trigger("reloadGrid"); // where #gridtable is my jqGrid idName

请帮帮我,我是第一次使用 jqgrid。

Edited Section

其实ajax调用是在demo阶段,代码如下。

function approoveButton()
        {
            $("#mybuttondialog").load("<s:property value='issueTrackerUrl'/>?id="+global_id);

        }

这里的 issueTrackerUrl 是一个成功调用 ajax 的动作。 在这里我重新加载 jqgrid

 function reload() 
        {
              $("#gridtable").trigger("reloadGrid"); 
        }

【问题讨论】:

    标签: jquery json jqgrid struts2 struts2-jquery


    【解决方案1】:

    你需要在ajax调用成功时触发reload函数,然后你才能重新加载grid。

    $("#mybuttondialog").load("<s:property value='issueTrackerUrl'/>?id="+global_id,  function(responseText, statusText, xhr)
            {
                    if(statusText == "success")
                            alert("Successfully loaded the content!");
                           $("#gridtable").trigger("reloadGrid");
                    if(statusText == "error")
                            alert("An error occurred: " + xhr.status + " - " + xhr.statusText);
            });
    

    调用那些在ajax成功的那一行。 issueTrackerUrl 应该返回成功或错误。

    【讨论】:

    • 你能给我举个例子吗,我已经尝试过上面的代码,但是每次执行上面的代码时浏览器都会崩溃
    • 谢谢,但有人怀疑应该调用哪一行来表示 ajax 的成功以及如何调用,对不起,但我不知道使用 jquery
    • 还有一个问题 var ids =jQuery("#list10").jqGrid('getGridParam','selarrrow') 中的“list10”是什么,我是新手,对jqgrid有所了解。请点击链接stackoverflow.com/questions/3754953/…
    • $("#gridtable").trigger("reloadGrid");应该调用ajax成功
    • jQuery("#list10").jqGrid('getGridParam','selarrrow')--list10是html元素的id
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多