Как узнать, какая LinkButton в ListView была нажата - PullRequest
2 голосов
/ 30 ноября 2011

В настоящее время у меня есть LinkButton в ItemTemplate ListView. Каждая кнопка в ListView должна вызывать один и тот же обработчик события щелчка. Однако в обработчике мне нужно знать, какая кнопка была нажата. Возможно ли это?

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

1 Ответ

8 голосов
/ 30 ноября 2011

Добавьте CommandName свойство к каждому LinkButton и обработайте событие ListView ItemCommand.

Также вам необходимо установить свойство ListView DataKeys для уникального идентификатора вашего объекта источника данных.Вы можете получить выбранный ключ данных строки:

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 / игроков / PSODPlayer? автор = дан-wahlin & имя = WebForms-03 & режим = жить и клип = 0 и, конечно = aspdotnet-webforms4-интро

...