我在這裏看過其他答案,並沒有運氣。我有一個jqgrid,我想保持列的寬度。我將resize Stop事件的寬度保存到一個數據庫,然後每次加載網格時,我將colModel中的寬度設置爲存儲在數據庫中的寬度,但它永遠不會是正確的寬度。例如我有420存儲爲在列名稱的數據庫中的寬度,但當我加載網格,並檢查col模型,它有150的寬度。我檢查並確保正確的價值被傳回,所以我不能理解爲什麼jqgrid不會使用它。Jqgrid獲取並設置列寬
我不知道爲什麼,但它的jqgrid忽略了我在colmodel中傳遞的寬度。我在下面列出了我的jqgrid的減少版本。感謝您的任何幫助。
$('#ProjectTable').jqGrid({
datatype: 'json',
url: '<%= Url.Action("projectGridData", "SampleSelection") %>',
mType: 'POST',
colNames: [
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.ProjectId", "ID") %>"),
"",
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.Name", "Name") %>"),
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.Code", "Code") %>"),
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.Manager", "Manager") %>"),
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.StartDate", "Start Date") %>"),
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.CompletionDate", "CompletionDate") %>"),
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.Remark", "Remark") %>"),
htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.Status", "Status") %>"),
""
],
colModel:[
{name: 'FieldProjectId', width: 10, align: 'center', key: true, search: false, hidden: true},
{name: 'Edit', width: 30, search: false, sortable: false, align: 'center'},
{name: 'Name', width: ColumnManager.GetColumnWidth('ProjectTable', 'Name'), index: 'Name', editable: true},
{name: 'Code', width: 50, index: 'Code', editable: true},
{name: 'Manager', width: 100, index: 'Manager', editable: true},
{name: 'StartDate', width: 65, index: 'StartDate', search: true, formatter : 'date', formatoptions: { srcformat: 'm/d/Y', newformat: 'd/m/Y'}, editable: true,editoptions : { dataInit: function (elem) { $(elem).datepicker({
changeMonth: true,
changeYear: true,
showWeek: true,
onSelect : function() { $('#ProjectTable')[0].triggerToolbar(); }
}).keyup(function(e) {
if (e.keyCode == 8 || e.keyCode == 46) {
$.datepicker._clearDate(this);
}
});
}}, searchoptions: { dataInit: function (elem) { $(elem).datepicker({
changeMonth: true,
changeYear: true,
showWeek: true,
onSelect : function() { $('#ProjectTable')[0].triggerToolbar(); }
}).keyup(function(e) {
if (e.keyCode == 8 || e.keyCode == 46) {
$.datepicker._clearDate(this);
}
});
} }},
{name: 'CompletedDate', width: 65, index: 'CompletedDate', formatter : 'date', formatoptions: { srcformat: 'm/d/Y', newformat: 'd/m/Y'}, editable: true, editoptions : { dataInit: function (elem) { $(elem).datepicker({
changeMonth: true,
changeYear: true,
showWeek: true,
onSelect : function() { $('#ProjectTable')[0].triggerToolbar(); }
}).keyup(function(e) {
if (e.keyCode == 8 || e.keyCode == 46) {
$.datepicker._clearDate(this);
}
});
}}, sorttype:'date' , searchoptions: { dataInit: function (elem) { $(elem).datepicker({
changeMonth: true,
changeYear: true,
showWeek: true,
onSelect : function() { $('#ProjectTable')[0].triggerToolbar(); }
}).keyup(function(e) {
if (e.keyCode == 8 || e.keyCode == 46) {
$.datepicker._clearDate(this);
}
});
}}},
{name: 'Remark', width: 200, index: 'Remark', search: false, editable: true},
{name: 'Status', width: 95, index: 'Status', editable: true },
{name: 'Delete', width: 20, search: false, sortable: false, align: 'center'},
],
caption: htmlDecode("<%=Atmis.EncodedLabel("Sample.Project.Caption", "Project") %>"),
width: $('#tabs-projects').width() - 20,
//shrinkToFit: false,
sortname: 'FieldProjectId',
loadui: 'block',
rowNum: 20,
rowList: [10,25,50,100,200],
sortorder : 'desc',
headertitles:true,
resizeStop: function(width, index) {
var colModel = $("#ProjectTable").jqGrid('getGridParam','colModel');
ColumnManager.SetColumnWidth("ProjectTable",colModel[index].name,width);
alert(JSON.stringify(colModel));
},
height: 'auto',
viewrecords: true,
toolbar: [true, "top"],
pager: $('#ProjectPager')
}
});
}, 1000);
});
}
}
).filterToolbar();
$('#ProjectTable').navGrid('#ProjectPager', {
search: false,
add: false,
edit: false,
del: false,
refresh: true
});
而且設置和獲取列寬的功能:
var ColumnManager = {
SetColumnWidth : function(grid, column, value)
{
$.ajax({
url: '<%= Url.Action("SaveGridColumWidthPreference", "SampleSelection") %>',
dataType: 'json',
type: 'POST',
data: {
gridID: grid,
width: value,
colName: column
},
success:function(data) {
}
});
},
GetColumnWidth : function(grid, column)
{
$.ajax({
url: '<%= Url.Action("GetGridColumWidthPreference", "SampleSelection") %>',
dataType: 'json',
type: 'POST',
data: {
gridID: grid,
colName: column
},
success:function(data) {
if(data > 0)
{
alert(data);
return data;
}
else
{
alert(projectDefaults["name"]);
return projectDefaults["name"]; //should return default here
}
}
});
},
ReturnColumnWidth : function(){
}
};
您使用的是哪個版本的jqGrid?你使用哪個jqGrid的分支([免費jqGrid](https://github.com/free-jqgrid/jqGrid),[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或者一些舊的jqGrid在版本<= 4.7)中?免費的jqGrid有'setColWidth'方法,可以爲你的場景提供幫助。我在開發免費的jqGrid之前將'setColWidth'方法作爲插件發佈。因此,如果您無法升級到免費的jqGrid,您可以使用它。 – Oleg
即時通訊使用Guriddo的一個版本5.0.1 –