2011-11-30 68 views
2

我目前在ListView的ItemTemplate中有一個LinkBut​​ton。 ListView中的每個按鈕都應調用相同的單擊事件處理程序。但是,在處理程序中,我需要知道哪個按鈕被點擊。這可能嗎?如何知道ListView中的哪個LinkBut​​ton被點擊

<asp:ListView runat="server" ID="lvKeyGroup"> 
    <LayoutTemplate> 
     <table> 
      <asp:Placeholder runat="server" ID="itemPlaceholder" /> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr> 
      <td>[<asp:LinkButton runat="server" Text="Remove" OnClick="lbRemoveAuthGroup_Click" />]</td> 
      <td><%# Eval("AuthorizationGroup") %></td> 
     </tr> 
    </ItemTemplate> 
</asp:ListView> 

回答

8

添加CommandName屬性爲每個LinkButton和處理ListView的ItemCommand事件。

此外,您需要將ListView的DataKeys屬性設置爲您的數據源對象唯一標識符名稱。在你可以得到選中行datakey:

void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e) 
{ 
    // in assumption that your data item's unique identifier type is Int32 
    var dataKey = (int)ListView1.DataKeys[e.Item.DataItemIndex].Value; 

    switch(e.CommandName) 
    { 
     case "Remove": 
      // your code here 
      break; 
    } 
} 

請點擊此鏈接爲ListView控件概述:http://msdn.microsoft.com/en-us/library/bb398790.aspx

而且,觀看此視頻:http://www.pluralsight-training.net/microsoft/players/PSODPlayer?author=dan-wahlin&name=webforms-03&mode=live&clip=0&course=aspdotnet-webforms4-intro

+0

謝謝。這似乎是正確的路線。我只是在處理程序中引用數據項時遇到了一些問題。我所能看到的只是ListViewDataItem,它沒有給我足夠的信息來查詢數據庫以刪除項目。有任何想法嗎? – Kyle

+0

@凱爾,我已經更新回答 –

+0

謝謝。我感謝所有的幫助。 – Kyle

相關問題