繁体   English   中英

单击上传按钮上传文件后如何重新加载Jqgrid?

[英]how to reload the Jqgrid after upload the file by click upload Button?

当我通过单击上载按钮 上载文件时。 它应该重新加载我的jqgrid ,新值应该在网格的顶部,这是我的Task的一个场景。 我需要在Jquery中做哪些更改? 我使用loadonce = False,但它会连续加载网格。 如果重新加载整个页面,那么我将在网格中获得价值。

_initUploadedFilesGrid: function(optionsM, resData){
             $('table#viewUploadedFiles').trigger("reloadGrid");
             $("#tmp").data('options', optionsM);
             $('#viewUploadedFilesDiv table#viewUploadedFiles').cb({
                    datatype: 'json'
                    ,mtype: 'POST' 
                    ,url: optionsM.urls.getAllUploadedFiles
                    , jsonReader : {
                        root:"UploadedFiles",
                    }
                    ,colNames:  [
                                 'Vendor Id'
                                 ,'Import ID'
                                 ,'Imported Organization'
                                 ,'Source Authoring Tool'
                                 ,'Import Start Time'
                                 ,'Import Completed Time'
                                 ,'Status'
                                 ,'File Name'
                                 ,'File Type'
                                 ,'Content Area'
                                 ,'Course'
                                 ,'Band'
                                ]
                    ,colModel:  [
                                {name: 'VendorId'}
                                ,{name: 'ImportFileId'}
                                ,{name: 'organizationId'}
                                ,{name: 'sourceAuthoringTool'}
                                ,{name: 'importStartTime'}
                                ,{name: 'importCompletedTime'}
                                ,{name: 'status'}
                                ,{name: 'fileName'}
                                ,{name: 'fileType'}
                                ,{name: 'contentAreaId'}
                                ,{name: 'CourseId'}
                                ,{name: 'BandId'}
                                 ]
                    ,columnchoosercaption: optionsM.msgs.chooseColumns
                    ,height: 'auto'
                    ,width: 1150
                    ,pager: '#viewUploadedFilesGridPager'
                    ,sortname: 'qImportFileId'
                    ,sortorder: "desc",
                    //,loadonce: false,

                    onSelectRow: function(rowId, status){

                        var $grid = $('#viewUploadedFiles table[id=viewUploadedFiles]');
                        var row = $grid.getRowData(rowId);
                        $.cete.contentEditor._itemStatusDialog(row.ImportFileId);
                    },
             });
                $('#viewUploadedFiles table#viewUploadedFiles').jqGrid('setGridWidth', $('#gridviewUploadedFilesContainer').width());

            },
$('input:radio[name=gradeType]').click(function() {
          var selected = $('input:radio[name=gradeType]:checked').val();
          if (selected=="Course") {
              $('#BandSettingDiv').hide();
              $('#CourseSettingDiv').show();
              $('#CourseId option').eq(0).attr("selected",true);
              $('#BandId option').eq(0).attr("selected",true);
            }
          else{
                 $('#BandSettingDiv').show();
                 $('#CourseSettingDiv').hide();
                 $('#CourseId option').eq(0).attr("selected",true);
                 $('#BandId option').eq(0).attr("selected",true);
            }
        });
    me._initUploadedFilesGrid(options, "");

},

尝试更改此代码...您说过,对话框右侧有一个上传按钮。 使用您的上载对话框ID代替此$(“#progressOfUpload”),它肯定会起作用!

$('input:radio[name=BandType]').click(function() {
          var selected = $('input:radio[name=BandType]:checked').val();
          if (selected=="gradeCourse") {
              $('#BandSettingDiv').hide();
              $('#CourseSettingDiv').sh
              $('#CourseId option').eq(0).attr("selected",true);
              $('#BandId option').eq(0).attr("selected",true);
            }
          else{
                 $('#BandSettingDiv').show();
                 $('#CourseSettingDiv').hide();
                 $('#CourseId option').eq(0).attr("selected",true);
                 $('#BandId option').eq(0).attr("selected",true);
            }
        });
        $("#progressOfUpload").off('dialogclose').on('dialogclose', function(event) {
            $('table#viewUploadedFiles').jqGrid('GridUnload');
            me._initUploadedFilesGrid(options, "");
        });
    me._initUploadedFilesGrid(options, "");

},

您的代码似乎非常令人怀疑。 特别是选择器喜欢

$('table#viewUploadedFiles')
$('#viewUploadedFilesDiv table#viewUploadedFiles')
$('#viewUploadedFiles table[id=viewUploadedFiles]')

也怀疑使用未知方法.cb ,它们具有与.jqGrid相同的选项。

我想您将创建ID重复的 HTML标记,这在HTML中是不允许的,并且可能会出现很多问题。 页面上id属性的值必须唯一。

即使id等于viewUploadedFiles<table>是唯一的,您也绝对不应使用#viewUploadedFilesDiv table#viewUploadedFilestable[id=viewUploadedFiles]类的选择器。 DOM API包含map(字典)对象,该对象允许通过id快速获取DOM元素。 本机 DOM方法getElementById 如果您使用$("#viewUploadedFiles")则该方法将由jQuery内部使用,并且执行将很快。 如果您使用其他选择器,例如table[id=viewUploadedFiles]则执行将很慢,因为无法使用getElementById '#viewUploadedFilesDiv table#viewUploadedFiles'这样的选择器也会很慢,因为jQuery首先会使用getElementById制作$("#viewUploadedFilesDiv") ,然后在$("#viewUploadedFilesDiv")上执行.find("table#viewUploadedFiles") $("#viewUploadedFilesDiv") 它会使执行速度变慢,并且仅当您的HTML标记有错误并且您允许具有相同id =“ viewUploadedFiles”的多个元素时才应使用。 jqGrid代码在内部使用ID选择器和网格ID( $("#viewUploadedFilesDiv") )。 因此,它不支持ID重复的<table>用法。 结果,可以重新加载另一个网格,并且可以递归地重新加载父网格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM