我在列表视图的每一行都有一个按钮
我在click事件上有一个方法,我想在其中获取数据项的ID
我在列表视图中放置了hidden field
来存储ID
但是,
ListView1.FindControl("hiddenField") is returning null.
我已尝试了几个不同的事件参数,但只有空白事件参数使用此按钮,因此我在事件参数中没有任何内容。
我尝试设置按钮的命令来调用commandEventArgs,但无论我使用什么事件args,除了“eventArgs”,我得到:
'btnManage_Click'没有重载匹配委托'System.EventHandler'
如何将事件args放入此按钮?
修改
按钮位于以下ListView
的ItemTemplate部分<asp:ListView ID="ListView1" runat="server" DataSourceID="LinqDataSource1" EnableModelValidation="True" DataKeyNames="Id" InsertItemPosition="LastItem" >
<LayoutTemplate>
<table id="Table2" class="table" runat="server">
<tr id="Tr1" runat="server">
<td id="Td1" runat="server">
<table runat="server" id="itemPlaceholderContainer" style="background-color: #FFFFFF; border-collapse: collapse; border-color: #999999; border-style: none; border-width: 1px; font-family: Verdana, Arial, Helvetica, sans-serif;" border="1">
<tr id="Tr2" runat="server" style="background-color: #DCDCDC; color: #000000;">
<th id="Th1" runat="server"></th>
<th id="Th2" runat="server">Name</th>
<th id="Th3" runat="server">Manage</th>
</tr>
<tr runat="server" id="itemPlaceholder"></tr>
</table>
</td>
</tr>
<tr id="Tr3" runat="server">
<td id="Td2" runat="server" style="text-align: center; background-color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000;"></td>
</tr>
</table>
</LayoutTemplate>
答案 0 :(得分:7)
你可以这样使用
<asp:Button runat="server" CommandArgument='<%# DisplayIndex %>'/>
查看API
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listviewcommandeventargs.aspx
如果你有一个按钮,那么只需
protected void templateButton_OnClick(object sender, EventArgs e)
{
Button myButton = (Button)sender;
}
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemcommand.aspx
假设您有一个属性“id”,那么您可以像这样使用
CommandArgument='<%#Eval("id")'
因为它区分大小写并且您有
DataKeyNames="Id"
所以你应该使用如下
CommandArgument='<%#Eval("Id")'
并使用如下
int i = Convert.ToInt32(myButton.CommandArgument.ToString());
答案 1 :(得分:0)
You can try this:
ListView lv = (ListView)sender
此处发件人是按钮点击事件的参数。然后尝试获取信息。
答案 2 :(得分:0)
我使用以下代码行通过LinkButton发送使用列表视图显示的项目的ID:
<asp:LinkButton ID="LinkButton1"
runat="server"
Text="Quick View"
Font-Size="Small"
OnCommand="QuickView"
CommandArgument='<%# Eval("Hoarding_Id") %>' >
</asp:LinkButton>
它工作得很好......