asp.net listview项目的右键单击事件

时间:2013-04-24 03:58:44

标签: jquery asp.net listview

我有一个listview,我需要为右键单击事件添加一个弹出窗口。目前我用jquery实现了它。但是页面的初始加载,右键单击不起作用。但是,如果我刷新页面,则右键单击正在运行。我查看了html源代码,我可以看到正确加载的所有标记和jquery变量。

这是我的标记。

<asp:ListView ID="lvKeywords" OnItemDataBound="lvKeywords_ItemDataBound" OnItemDeleting="lvKeywords_ItemDeleting" 
            DataKeyNames="Key" runat="server" OnItemUpdating="lvKeywords_OnItemUpdating" >
  <ItemTemplate>

      <div id="<%#Eval("Key") %>" class="fsKeywordItem">
          <asp:Literal ID="ltrlKeyword" runat="server"></asp:Literal>                 
      </div>

      <%--this is the popup--%>
      <div class="smartPopUp" id="<%#Eval("Suggession") %>" style="display: none;">
          <%-- there are some html controls here --%>
      </div>

      <script type="text/javascript">

            $(document).ready(function () {
               $("#" + '<%#Eval("Key") %>').mousedown(function (event) {
                    switch (event.which) {
                           case 3:
                                 event.preventDefault();
                                 showPopup('<%#Eval("Suggession") %>');
                           }
               });

               $("#" + '<%#Eval("Key") %>').bind("contextmenu", function (e) {
                    e.preventDefault();
               });
            });
      </script>
  </ItemTemplate>
</asp:ListView>

<script type="text/javascript">
   function showPopup(divId) {
      $("#" + divId).css("display", "block");
   }
</script>

关于这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我认为这是因为document.ready()而发生的。因此,在Listview中删除该jquery部分并使用javascript来完成它。

所以,我会给你一个列表视图的例子。

  oncontextmenu='showPopup("popupDivId"); return false;'

将此添加到您的div中,如下所示

  <div id="<%#Eval("Key") %>" class="fsKeywordItem" oncontextmenu='showPopup("popupDivId"); return false;'>
      <asp:Literal ID="ltrlKeyword" runat="server"></asp:Literal>                 
  </div>

  <%--this is the popup--%>
  <div class="smartPopUp" id="<%#Eval("Suggession") %>" style="display: none;">
      <%-- there are some html controls here --%>
  </div>

这里会发生什么,oncontextmenu将触发rigth click事件然后我们在那里调用我们的函数。然后“return false”将停止右键单击事件的默认行为。这意味着它将停止浏览器的默认右键菜单。

希望您可以使用oncontextmenu找到解决方案。

:)