点击上传按钮 上传文件时。它应该重新加载我的 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, "");
},
答案 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#viewUploadedFiles
或table[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重复项的用法。结果可以重新加载另一个网格,你可以重新加载父网格。