我目前正在开发专为自动售货机和这样的管理Web应用程序。 我决定使用jQuery和jQuery UI和jqGrid的这个项目,所以我可以很容易地提供了巨大的和高度可定制的用户界面。
不幸的是, jqGrid的文档是非常过时的,不包括这个伟大的插件的所有功能(因为我做的真的很喜欢它,即使该文件是比较差)。
无论如何,足够的背景资料,我想。 让我们言归正传:
我用它内置的jqGrid来从电网添加,编辑和删除项导航栏。
我有这个工作就像一个魅力,除了一两件事:某些字段可能只增加一个新项目时启用(或可见),而不是当编辑模式(它们应该被隐藏和/或禁用)。
例:
该公司我工作的自动售货机出售塔和有这些塔的几种类型(不同的尺寸和材料)。 当一个新的塔被添加到一个位置,并输入到系统中,该类型必须设置。 但塔不会奇迹般地随时间而改变,所以这个领域以后可能也不会在编辑。
有谁知道,如果这种行为可以通过改变一些初始化参数来完成?
也许这是一个未公开的编辑选项(editoptions)或窗体选项(formoptions)?
或者,也许你已经有了一个简单的解决方案?
我很想听听你的建议/解决方案!
谢谢=)
您可以以不同方式实现您的要求。 例如,内部beforeShowForm
事件时,可以隐藏或显示
jQuery("#list").jqGrid({
colModel: [
{ name: 'Name', width: 200, editable: true },
//...
}).jqGrid('navGrid','#pager', { edit: true, add: true, del: false},
{ // edit option
beforeShowForm: function(form) { $('#tr_Name', form).hide(); }
},
{ // add option
beforeShowForm: function(form) { $('#tr_Name', form).show(); }
});
从列的名称属性-其中ID“tr_Name”是从“tr_”字头和“名称”构建colModel
。
更新 :在回答和另一个显示另一种方式是如何的属性可以动态之前编辑将被初始化改变。
更新2: 自由的jqGrid允许定义editable
回调函数或"disabled"
, "hidden"
或"readonly"
。 参见维基文章 。 它可以实现同样的要求更加容易。
为了使现场编辑或没有,这是我结束了编码寻找答案了一段时间后(禁用行内编辑编辑,但允许它“添加”),并没有找到我所需要的答案:
colModel :[
{name:'id', index:'id', editable:false, ...
}).navGrid("#pager",{edit:false,add:true,del:false,search:false,refresh:true},
{}, // edit
{
beforeInitData: function(formid) {
$("#list").jqGrid('setColProp','id',{editable:true});
},
afterShowForm: function (formid) {
$("#list").jqGrid('setColProp','id',{editable:false});
},
下面是一个例子:
http://www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm
beforeShowForm: function(form) {
$('#tr_Name', form).hide();
}
可见,但不可编辑:
{ // edit option
beforeShowForm: function(form) {
$('#col_name', form).attr("disabled", true);
}
}
这将与自由jqGrid的,简单明了的工作:
这个特殊的例子将允许编辑仅在“加”的形式:
editable: function (options) {
// Allow edit only for "add" not for "edit"
if (options.mode === "addForm")
{
return true;
}
else if (options.mode === "editForm")
{
return false;
}
else
{
return false;
}