我有一个ListView,它呈现一个表,如下所示:
<asp:ListView runat="server" ID="lwPerson">
<LayoutTemplate>
<table>
<tr id="itemPlaceHolder" runat="server"></tr>
<tr>
<td><img src="/blabla/blabla.png" alt="New person"/></td>
<td><strong>New person</strong></td>
<td><asp:ImageButton runat="server" CommandName="NewPerson" ImageUrl="~/blabla/icon_arrow.png"></asp:ImageButton></td>
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><img src='<%# IIf(Not Eval("PlayerPerson.User.SmallProfileThumbnailPath") Is Nothing, Eval("PlayerPerson.User.SmallProfileThumbnailPath"), "/blabla/default_profilepic.png") %>' alt="Profile picture" /></td>
<td><%# Eval("PlayerPerson.Name") %></td>
<td><asp:ImageButton runat="server" CommandName="ExistingPerson" CommandArgument='<%# Eval("PlayerPerson.PersonId") %>' ImageUrl="~/blabla/icon_arrow.png"></asp:ImageButton></td>
</tr>
</ItemTemplate>
</asp:ListView>
为此,我想在整个TableRow中添加一个click事件,它应该与ImageButton完全相同。如果我可以解雇ListView的ItemCommand事件,就像我使用按钮一样,这将很容易 - 但我还没有找到直接执行此操作的解决方案。相反,我添加了一个onclick-event(客户端):
<tr onclick="test(this);">
这将触发JavaScript函数:
function test(tr) {
tr.cells[2].firstElementChild.click();
}
我知道我的表中只有3列,而且我也知道该列中只有一个元素。然后我只是触发按钮的click事件。这有效,但可能不是最漂亮的解决方案。
所以,如果有人能告诉我是否有另一种(更好的)方法来做到这一点,我将不胜感激。另外,我想知道如何'优化'JavaScript函数 - 可能用jQuery编写。
提前谢谢!