我正在尝试做一些应该相对简单的事情。我正在使用 ListView 来显示许多项目,使用 ItemTemplate。在 ItemTemplate 内,我有一个围绕整个项目的 div,以便我可以突出显示悬停事件(已由 jQuery 处理)。

我想要做的是让 div 上的点击事件触发一个按钮来打开该特定项目的详细信息 View 。我遇到的问题是在使用 jQuery 时拉回该按钮的 ClientID。我试过:

$('#<%= Button1.ClientID %>')

路线,但这不起作用,因为页面加载时 Button 不存在。

基本代码如下:
<asp:listview>
 <itemtemplate>
  <td runat="server">
   <div class="container">
    <asp:linkbutton id="Button1" runat="server" text="View Details" />
     fun and exciting stuff here...
   </div>
  </td>
 </itemtemplate>
</asp:listview>

非常感谢任何建议或帮助!

最佳答案

将方法连接到 ListView 的 ItemDataBound 事件。在那里,您可以在 FindControl 参数的 Item 属性上使用 ListViewItemEventArgs 方法来获取对列表中每个项目的链接按钮的引用。从该引用资料中,您可以获得 ClientID,并使用它做您需要做的任何事情。

更新
就您可以对按钮的引用执行的操作而言,最简单的方法可能是在 ItemDataBound 事件中分配您的点击事件,可能是这样的

var button = (Button)e.Item.FindControl("Button1");
button.OnClientClick = "ShowEditDialog(" + Eval("ItemId") + ")";

如果您需要在客户端连接它,也许您可​​以维护一个将 ClientID 映射到项目 ID 的字典,然后将该字典发送到客户端,在那里您可以对其进行迭代并将事件连接起来。

关于c# - 如何提取asp :button inside an asp:listview for use with jQuery? 的clientID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/444151/

10-12 12:45