我有一个带有一组项目的转发器,我可以通过单击绑定到每个项目的按钮来选择。这一切都很好,但我想知道是否可以通过点击行中的任何位置来选择有问题的项目?
我想如果有可能,它会涉及将事件绑定到转发器的ItemDataBound事件上的一行。
是否可以添加一个属性来调用方法后面的行代码?如果是这样,我将不得不使用javascript吗?
还是有更好的方法来解决这个问题吗?
无论如何,这是我现在的转发器:
<asp:Repeater ID="repLists" runat="server" onitemdatabound="repLists_ItemDataBound">
<HeaderTemplate>
<div class="repeaterScroller" style="width: 50%">
<table style="font-size:12px;" width="100%" cellpadding="5px" border="1px">
<tr class="header">
<td style="background-color:#f5f5f5; visibility:hidden;">
</td>
<td>
List
</td>
<td>
Description
</td>
<td>
Rows
</td>
<td>
Columns
</td>
<td>
Pages
</td>
<td>
Staydown
</td>
<td>
Link
</td>
<td>
Min
</td>
<td>
Max
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="text-align: center; visibility:hidden;">
<asp:LinkButton ID="lnkButtonEdit" runat="server" OnCommand="lnkButtonEdit_Command" CommandArgument='<%# Eval("RowNumber")%>' CommandName="Edit"></asp:LinkButton>
</td>
<td>
<%#((DataRowView)Container.DataItem)["ListNo"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Description"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Rows"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Cols"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["NPages"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Staydown"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Link"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["SelMin"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["SelMax"]%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr bgcolor="#e8e8e8">
<td style="text-align: center; visibility:hidden;">
<asp:LinkButton ID="lnkButtonEdit" runat="server" OnCommand="lnkButtonEdit_Command" CommandArgument='<%# Eval("RowNumber")%>' CommandName="Edit"></asp:LinkButton>
</td>
<td>
<%#((DataRowView)Container.DataItem)["ListNo"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Description"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Rows"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Cols"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["NPages"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Staydown"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["Link"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["SelMin"]%>
</td>
<td>
<%#((DataRowView)Container.DataItem)["SelMax"]%>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</div>
</FooterTemplate>
</asp:Repeater>
点击项目我要点击的当前点击事件:
protected void lnkButtonEdit_Command(object sender, CommandEventArgs e)
{
switch (e.CommandName)
{
case "Edit":
break;
}
}
http://forums.asp.net/t/1580368.aspx?Firing+postback+from+Repeater+row+click+是一个相关的问题,我在那里试用了这个方法,但任何建议或其他想法都会受到赞赏。
非常感谢。
答案 0 :(得分:1)
也许你可以尝试使用javascript / jquery ..你可以简单地触发点击事件上的按钮点击事件。像
$('.repeaterScroller tr').click(function(){
$(this).find('input[type="button"]').click();
});
只需占用每一行,找到其中的按钮,然后点击行触发按钮事件。类似的东西