Jqgrid 使用“选择框”动态更改列的“可编辑”属性
我正在使用表单编辑。我想根据下拉框中的选择禁用添加和编辑表单中的某些字段。触发此事件的最佳事件是什么?我已尝试使用dataEvents:Jqgrid 使用“选择框”动态更改列的“可编辑”属性,jqgrid,Jqgrid,我正在使用表单编辑。我想根据下拉框中的选择禁用添加和编辑表单中的某些字段。触发此事件的最佳事件是什么?我已尝试使用dataEvents: { name:'type_cd', edittype:'select', editoptions:{ dataUrl:'functions.php', dataEvents:[{ type:'change', fn: funct
{ name:'type_cd',
edittype:'select',
editoptions:{
dataUrl:'functions.php',
dataEvents:[{
type:'change',
fn: function(e){
$(this).setColProp('cntrct_id',{
editoptions:{editable:false}
});
}
}]
}
},
这对我的表单字段没有明显的影响,但我知道它正在被访问,因为如果我在表单字段中输入一条消息,我可以从中获得一条警告消息
编辑
如果我提交表单,下次打开表单时,设置为editable:false的列将不会出现。这是朝着正确方向迈出的一步,但我希望它立即不可编辑。实际上,我希望它是可见的,但禁用的,即禁用的:true首先,dataEvents允许您注册对编辑元素的元素的回调。在回调内部,这将被初始化为将被绑定的DOM元素。所以$this在change处理程序中是元素上的包装器,而不是网格上的包装器。$this.setColProp的用法将不正确
要禁用“添加/编辑”表单中的某些输入字段,可以使用以下事实:所有输入元素都获得相同的id,就像colModel中相应列的name属性值一样。因此,如果需要禁用cntrct_id的输入,可以在id=cntrct_id的元素上将disabled属性设置为true
{
名称:'type_cd',
edittype:'选择',
编辑选项:{
dataUrl:'functions.php',
数据事件:[{
键入:“更改”,
fn:功能e{
//禁用列“cntrct\u id”的输入/选择字段
//在编辑表单中
$cntrct_id.propdisabled,true;
}
}]
}
}
了解editoptions将用于任何现有编辑模式(表单编辑、内联编辑和单元格编辑),这一点很重要。如果要编写支持所有编辑模式的dataEvents代码,则必须检测编辑模式并使用一些其他编辑字段ID。未测试的代码可能如下所示
{
名称:'type_cd',
edittype:'选择',
编辑选项:{
dataUrl:'functions.php',
数据事件:[{
键入:“更改”,
fn:功能e{
var$this=$e.target,$td,rowid;
//禁用列“cntrct\u id”的输入/选择字段
如果$this.hasClassFormElement{
//表单编辑
$cntrct_id.propdisabled,true;
}否则{
$td=$this.closesttd;
如果$td.hasClassedit-cell{
//单元编辑
//我们不需要禁用$cntrct\u id
//因为在单元编辑模式下仅编辑一个单元
}否则{
//内联编辑
rowid=$td.closesttr.jqgrow.attrid;
如果罗维德{
$++$.jgrid.jqIDrowid++\u cntrct\u id
.这是真的;
}
}
}
}
}]
}
}
最后一句话。如果您仍然使用jQuery 1.6之前的旧版本的jQuery,而jQuery 1.6不支持此方法,则必须改用。@Oleg:This is working可以获取警报消息,但不会禁用此字段。
表单字段是否需要任何特殊值?Oleg,您的答案最重要的一点是,您不仅告诉了解决方案,还解释了其背后的理论。你太棒了。@MattWall:不客气!我很高兴你喜欢我回答问题的方式。我认为理解问题本身比解决问题更重要。我也喜欢Oleg的回答方式,当我开始使用jqgrid时,我从Oleg的回答中得到了大部分与jqgrid相关问题的解决方案。非常感谢。Oleg@Kris:谢谢克里斯!我很高兴我也能帮助你。不客气!这不是答案。试着为这个网站做些贡献,这会给你足够的声誉来评论其他人的答案。@Pravish Jayasundar,更好的办法是,问一个新问题。我不能给上面的问题添加评论,所以我不得不作为答案发布