【问题标题】:jqgrid .trigger('reloadGrid'); doesn't work with multiple gridsjqgrid .trigger('reloadGrid');不适用于多个网格
【发布时间】:2015-06-04 09:53:33
【问题描述】:

我有一个预填充数据的 jqgrid。单击任何行将发送 4 个 ajax 请求以获取详细信息(加载 4 个 jsp 页面)。 3 页中有新的 jqgrids。

我在第一个网格(jsp 页面)上有一个外部搜索和清除选项。它可以正常工作任何 # 次。但是一旦我用网格获取其他页面,搜索和清除就不起作用了。当然,脚本正在执行,但不是触发器。

我确实看到了一些解决方案,并且已经应用​​了所有但无济于事。

网格 1:

<sjg:grid
    autowidth="true"
    id="assetgridtable"
    caption="List of Assets"
    dataType="json"
    href="%{remoteurl}"
    pager="true"
    navigator="false"
    navigatorSearch="false"
    navigatorAdd="false"
    navigatorEdit="false"
    navigatorDelete="false"
    navigatorView="false"
    navigatorExtraButtons="{
    seperator: { 
            title : 'seperator'  
        }
    }"
    gridModel="gridModel"
    rowList="10,15,20,30,50"
    rowNum="15"
    shrinkToFit="true"
    viewrecords="true"
    onSelectRowTopics="rowselect"
    loadonce="false">

下面是 rowselect 的订阅代码。

$.subscribe('rowselect',
  function(event, data){
    var id = event.originalEvent.id;
    $.ajax(
    {
        type : 'GET',
        url : "displayAsset.action",
        cache : false,
        data :
        {
            "id" : id
        },
        success : function(result)
        {
            $("#dataassetshow").append('<div id="assetshow"></div>');
            $("#assetshow").html(result);
            $("#assetshow").css(
            {
                "text-align" : "center",
            }).show("fast");
        }
    });

我只展示了一个 ajax 调用,同样还有 3 个调用获取其他网格。

现在是搜索代码

 $('#searchAsset').on('submit', function(event)
 {
    $("#assetgridtable").jqGrid('setGridParam',
    {
        type : 'GET',
        url : "listAsset.action",
        page : 1,
        datatype : 'json',
        cache : false,
        gridview : true,
        postData :
        {
            "search" : function()
            {
                return true;
            },
            "searchText" : function()
            {
                return $('#searchText').val();
            },
            "option" : function()
            {
                return $('input[name=option]:checked').val();
            },
            "from" : function()
            {
                return $('#from').val();
            },
            "to" : function()
            {
                return $('#to').val();
            },

        },
    }).trigger('reloadGrid');
    event.preventDefault();
});

如前所述,上面的代码一直运行良好,但是当获取其他网格时,它不会触发重新加载!!!

【问题讨论】:

    标签: struts2 jqgrid struts2-jquery struts2-jquery-grid struts2-jquery-plugin


    【解决方案1】:

    不要使用trigger('reloadGrid'),最好使用重新加载主题。

    <sjg:grid 
    ...
    reloadTopics="reloadMyGrid"
    ...
    />
    

    之后,您可以像这样在自定义 javascript 代码中触发重新加载:

    $.publish("reloadMyGrid");
    

    或者通过点击 sj:a link 这样的链接

    <sj:a ... onClickTopics="reloadMyGrid">Link</sj:a>
    

    【讨论】:

    • 你是怎么尝试的?
    • 我添加了上述属性并代替“.trigger('reloadGrid');”,我给了“.publish('reloadAssetGrid');” !!
    • .publish('reloadAssetGrid');使用单个网格作为触发器('reloadGrid')可以正常工作,问题仅在我获取其他网格时才开始!!!
    • 其他每个网格都有一个触发主题然后发布?
    • 抱歉回复晚了,我正在旅行。我给每个网格添加了附加属性 reloadTopics 并尝试了。问题仍然存在。我仅将发布功能用于第一个网格,而不用于后续网格。它只是根据从网格 1 中传递的选定行的 id 在页面 onload 上从服务器获取数据。
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2011-02-09
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多