C# 单击按钮获取ASP.NET Listview中项目的ID

C# 单击按钮获取ASP.NET Listview中项目的ID,c#,asp.net,listview,C#,Asp.net,Listview,我在列表视图的每一行上都有一个按钮。 我有一个单击事件的方法,我想在其中获取数据项的ID。 我在列表视图中放置了一个隐藏字段来存储ID。 但是, ListView1.FindControl("hiddenField") is returning null. 我已经尝试了几个不同的事件ARG,但是只有空白事件ARG正在使用这个按钮,所以在事件ARG中我没有任何东西。 我试图将按钮的命令设置为调用commandEventArgs,但无论我使用“eventArgs”之外的什么事件args,我都会得

我在列表视图的每一行上都有一个按钮。
我有一个单击事件的方法,我想在其中获取数据项的ID。
我在列表视图中放置了一个
隐藏字段来存储ID。
但是,

ListView1.FindControl("hiddenField") is returning null. 

我已经尝试了几个不同的事件ARG,但是只有空白事件ARG正在使用这个按钮,所以在事件ARG中我没有任何东西。 我试图将按钮的命令设置为调用commandEventArgs,但无论我使用“eventArgs”之外的什么事件args,我都会得到:

“btnManage\u Click”的重载与“System.EventHandler”的委托不匹配

如何将事件参数放入此按钮

编辑

按钮位于以下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>

名称
管理
您可以这样使用

 <asp:Button runat="server" CommandArgument='<%# DisplayIndex %>'/>
  CommandArgument='<%#Eval("id")' 
更多细节

编辑1 假设您有一个属性“id”,那么您可以这样使用

 <asp:Button runat="server" CommandArgument='<%# DisplayIndex %>'/>
  CommandArgument='<%#Eval("id")' 
因此,您应该使用以下方法

CommandArgument='<%#Eval("Id")' 

此处sender是按钮单击事件的参数。然后尝试获取信息。

我使用以下代码行通过链接按钮发送使用列表视图显示的项目id:

<asp:LinkButton ID="LinkButton1" 
                runat="server" 
                Text="Quick View" 
                Font-Size="Small" 
                OnCommand="QuickView" 
                CommandArgument='<%# Eval("Hoarding_Id") %>' >   
</asp:LinkButton>


它工作正常…

按钮是发送者,我在尝试将发送者转换为ListViewOK时出错。你有Listbox的id吗?看起来不错,但我得到了://名称“DisplayIndex”在当前上下文中不存在。//我在.NET3上。5@hyperGeoMetric你可以用你的财产代替。我原以为这会奏效,但它不喜欢这样:“inti=Convert.ToInt32(myButton.CommandArgument);”。它说:“输入字符串的格式不正确。”我的按钮有:“CommandArgument=''@hyperGeoMetric你能把你列表视图的html放在ItemTemplate中吗?”
You can try this: 

ListView lv = (ListView)sender 
<asp:LinkButton ID="LinkButton1" 
                runat="server" 
                Text="Quick View" 
                Font-Size="Small" 
                OnCommand="QuickView" 
                CommandArgument='<%# Eval("Hoarding_Id") %>' >   
</asp:LinkButton>