2011-11-30 48 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

相关问题