通过特定按钮在OpenERP-7中以只读模式打开表单

0 投票
2 回答
1657 浏览
提问于 2025-04-18 16:44

我想知道在OpenERP-7中,是否可以通过一个按钮以只读模式打开一个表单。也就是说,虽然有些按钮可以让表单变得可编辑,但我想通过一个特定的按钮来限制这个功能。我希望当用户点击这个按钮时,表单以只读模式打开,用户不能创建、编辑或删除任何记录。

我在我的.py文件中尝试使用了这个:

 def views(self,cr,uid,ids,context):
     for id in ids:
         deg_obj=self.pool.get('deg.form').browse(cr,uid,id)
         my_id=int(deg_obj.my_products)
     ss= int(deg_obj.categ_temp2)   
     domain = [('categ_id','=',ss)]
     return {
         'type': 'ir.actions.act_window',
         'name': _('Product'),
         'res_model': 'product.product',
         'view_type': 'form',
         'view_mode': 'tree,form',
         'target': 'current',
         'domain': domain,
         'store':False,
         'create':False,
         'edit':False     
               }

这是我的xml代码:

             <button name="views" string="VIEW PRODUCT" type="object" /> 

但是这样并没有奏效。我不知道是否需要在xml代码中添加什么属性,或者其他的什么设置。因为这个按钮调用后,表单应该只能以查看模式显示。

任何帮助或指导都非常感谢。谢谢大家!

2 个回答

0

如果你想让输入框只能以只读模式打开,那么你需要在这个只读输入框上添加一个属性,像这样:

 <input type="text" readonly/>

如果你想让输入框变成禁用状态,也是同样的道理。

 <input type="text" disabled/>

如果你使用jQuery,可以这样简单地应用这个属性:

 $("input").attr("readonly",true);
 $("input").attr("disabled",true);

要移除这个属性,可以这样做:

 $("input").removeAttr("readonly");
 $("input").removeAttr("disabled");

这两者的不同在于,使用 disabled 的时候,输入的值不会被提交到表单中,而使用 readonly 的时候,值是会被提交的。

这种方法适用于大多数输入类型,但对于单选框和复选框就不适用了。关于这类输入框的更多信息,你可以查看这个有用的帖子: HTML复选框可以设置为只读吗?

在你的页面上实现这个功能的简单方法如下:

      function makeReadOnly() {
           $("form :input").attr("readonly",true);
      }

      function makeEditable() {
           $("form :input").removeAttr("readonly");
      }
0

你可以从按钮那里传递一个上下文,然后可以像下面这样在表单的所有字段中设置属性:

<field name="field_name" attrs="{'readonly':[('your_context','=',True)]}">

撰写回答