【问题标题】:How to remove/unbind rowSelect event from primefaces datatable如何从primefaces数据表中删除/取消绑定rowSelect事件
【发布时间】:2014-01-21 00:58:28
【问题描述】:

我的主要问题是我想删除/取消绑定 rowSelect、rowUnselect 和 rowDblselect 事件
从数据表。

<p:dataTable id="myTable" value="#{myBean.myLazyModel}" var="var" 
        selection="#{myBean.selectedBean}" styleClass="uta-table lightgrey-table">

        <p:column selectionMode="multiple" id="select"
            style="width:2%;text-align:center" />

        <p:column id="namecol" headerText="Name" style="text-align:center">
            <p:inputText id="name" value="#{var.name}"
                styleClass="uta-textbox" style="text-align:center">
            </p:inputText>
        </p:column>
</p:dataTable>

假设数据表只有 5 行。现在我通过选择复选框(而不是通过单击行)选择了前 4 行。如果我选择第 5 行 通过单击该行(不选择复选框),然后取消选择前 4 行,导致仅选择第 5 行。这是我的客户关心的事情。

为了避免这个问题,我想到了取消绑定/删除 rowSelect 事件,这意味着我应该只能通过选中复选框来选择一行。同样的问题在 primeface 展示中也存在。

http://www.primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf

我尝试使用 jQuery css 选择器通过以下两种方式取消绑定/删除 rowSelect 事件

<script type="text/javascript">
            jQuery(function() {                        
                $('.lightgrey-table').off("rowSelect");
                $('.lightgrey-table').off("rowUnselect");
                $('.lightgrey-table').off("rowDblselect");

            });
</script>  

第二种方式

<script type="text/javascript">
            jQuery(function() {                        
                $('.lightgrey-table').unbind("rowSelect");
                $('.lightgrey-table').unbind("rowUnselect");
                $('.lightgrey-table').unbind("rowDblselect");

            });
</script>  

两者都不适合我。任何人都可以帮我解决这个问题。

先谢谢各位了

【问题讨论】:

  • 很难理解你想做什么?
  • @Makky 我已经编辑了这个问题。我相信现在可以理解了。请让我知道你仍然无法理解它。感谢您的回复。
  • 我坚信p:column selectionMode="multiple" 应该禁用行单击选择,仅对复选框启用它。然而,这似乎不是他们的优先事项code.google.com/p/primefaces/issues/detail?id=5206
  • @XtremeBiker 感谢您的链接,正如专家在链接中评论的那样,我们的项目不能作为 Pro。

标签: jquery jsf jsf-2 primefaces


【解决方案1】:

这不是很明显,但是按下 CTRL 键将允许选择多行而不影响已经选择的行。

如果 CTRL 键选项对您的客户端不起作用,您需要重新打开 jQuery '$' 快捷方式才能在 PrimeFaces 应用程序上使用它。包括以下 JSF outputScript 标记:

<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />

<h:outputScript target="head">
   $ = jQuery; // Put $ back so we can use jQuery in the default mode.
   $(document).ready(function() {
          // put your jQuery code here....
   });  </h:outputScript>

【讨论】:

  • 感谢您的回复。但是我们可能需要按照客户提出的问题中的要求做同样的事情。让我们看看进展如何
【解决方案2】:

你可以这样设计你的栏目

<p:datatable ...
   <p:column selectRow="false" ... />
</p:datatable>

通过这种方式,您只能通过单击复选框来选择和取消选择您的行。

【讨论】:

  • 非常感谢
猜你喜欢
  • 2015-04-09
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2018-01-15
  • 2023-03-28
  • 2012-10-24
  • 1970-01-01
  • 2014-10-14
相关资源
最近更新 更多