【问题标题】:Open a form in readonly mode through a specific button in OpenERP-7通过 OpenERP-7 中的特定按钮以只读模式打开表单
【发布时间】:2014-10-03 09:00:36
【问题描述】:

我想知道在 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 代码中添加任何属性或什么。因为只有通过此按钮调用,表单才会处于查看模式。 任何帮助或指导将不胜感激。谢谢大家

【问题讨论】:

  • 如果对您有帮助,请将答案标记为正确。
  • 我解决了用户访问权限的问题。

标签: jquery python xml forms openerp


【解决方案1】:

您可以从按钮传递上​​下文,并且可以在如下表单的所有字段中设置如下属性:

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

【讨论】:

    【解决方案2】:

    如果您希望输入对象以只读模式打开,那么您必须在只读输入字段上添加此属性,如下所示:

     <input type="text" readonly/>
    

    如果你想禁用它也是一样的。

     <input type="text" disabled/>
    

    使用jQuery,应用就这么简单:

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

    像这样删除:

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

    使用 2 的不同之处在于,使用 disabled 时,值不会在表单 post 中提交,而使用 readonly 时会。

    这适用于大多数输入类型,除了单选/复选框输入。对于这些类型的输入字段,您可以查看有关该主题的这篇有用的帖子:Can HTML checkboxes be set to readonly?

    在您的页面上执行此操作的一个简单函数如下所示:

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

    【讨论】:

    • 首先,我希望在查看模式下打开表单。没有任何特定的领域。在 OpenERP 中,我对使用 jquery 没有太多想法。
    • 你不需要 jQuery。你如何加载表单域?不管它们是如何加载的,只需添加一个readonly 属性,它在浏览器中将是只读的。
    • 查看表单字段是否已与表单一起加载。正如您在上面看到的,就像我的模型是 product.product 一样。当您加载表单时,将加载字段。现在我必须在按钮的功能或其他东西中设置属性。
    • 然后使用jquery。将它添加到您的页面,您可以将其作为一个函数执行,以便您可以在按钮单击或 onLoad 事件中调用它。您可以在我的答案中看到执行此操作的功能
    • 我不知道在 OpenERP 开发中使用 jquery 和 xml。你确定这可以用jquery实现吗? .你能指导我更深入一点吗
    猜你喜欢
    • 2018-10-29
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多