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

时间:2016-02-15 09:04:10

标签: javascript jquery jqgrid

点击上传按钮 上传文件时。它应该重新加载我的 jqgrid ,并且新值应该在网格的顶部,这是我的任务的场景。我需要在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, "");

},

2 个答案:

答案 0 :(得分:1)

尝试此代码更改... 你说过,右边有一个上传按钮。使用您的上传对话框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, "");

},

答案 1 :(得分:0)

您的代码似乎非常怀疑。特别是像

这样的选择者
$('table#viewUploadedFiles')
$('#viewUploadedFilesDiv table#viewUploadedFiles')
$('#viewUploadedFiles table[id=viewUploadedFiles]')

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

我认为您使用 id duplicates 创建HTML标记,这在HTML中是不允许的,并且可以解决许多问题。页面上id属性的值必须是唯一的。

即使<table> id等于viewUploadedFiles的{​​{1}}是唯一的,也不应使用#viewUploadedFilesDiv table#viewUploadedFilestable[id=viewUploadedFiles]等选择器。 DOM API保存map(字典)对象,允许非常快速地通过id获取DOM元素。有原生 DOM方法getElementById。如果你使用$("#viewUploadedFiles"),那么jQuery将在内部使用该方法,并且执行速度很快。如果您使用其他选择器,例如table[id=viewUploadedFiles],则执行速度会很慢,因为getElementById无法使用。像'#viewUploadedFilesDiv table#viewUploadedFiles'这样的选择器也会慢慢,因为jQuery将首先使用$("#viewUploadedFilesDiv")生成getElementById,然后在.find("table#viewUploadedFiles")上执行$("#viewUploadedFilesDiv")。它使执行缓慢,只有当您的HTML标记有问题并且允许具有相同id =&#34; viewUploadedFiles&#34; 的多个元素时才应该使用它。 jqGrid代码在内部使用id选择器和网格id($("#viewUploadedFilesDiv"))。因此,它不支持<table>上具有id重复项的用法。结果可以重新加载另一个网格,你可以重新加载父网格。

相关问题