簡體   English   中英

單擊按鈕獲取ASP.NET Listview中的項目ID

[英]Get ID of item in ASP.NET Listview on button click

我在listview的每一行都有一個按鈕。
我在click事件上有一個方法,我想在其中獲取數據項的ID。
我在列表視圖中放置了一個hidden field來存儲ID。
然而,

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

我已經嘗試了幾個不同的事件args,但只有空白事件args正在使用這個按鈕,所以我在事件args中沒有任何東西。
我嘗試設置按鈕的命令來調用commandEventArgs,但無論我使用什么事件args,除了“eventArgs”,我得到:

'btnManage_Click'沒有重載匹配委托'System.EventHandler'

如何將事件args放入此按鈕?

編輯

Button位於以下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 %>'/>

查看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

編輯1

假設你有一個屬性“id”,那么你可以像這樣使用

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

編輯2

因為它是區分大小寫的,你有

 DataKeyNames="Id"

所以你應該使用如下

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

並使用如下

 int i = Convert.ToInt32(myButton.CommandArgument.ToString());
You can try this: 

ListView lv = (ListView)sender 

這里sender是buttonclick事件的參數。 然后嘗試獲取信息。

我使用以下代碼行通過LinkBut​​ton發送使用列表視圖顯示的項目的ID:

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

它運作良好......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM