У меня есть следующее в ASP.NET GridView:
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="ibtnDown" runat="server" ToolTip="Down" CommandName="Down"
ImageUrl="~/images/arrow.png" Width="16px" Height="16px"
CommandArgument="<%# Container.DataItemIndex %>" />
</ItemTemplate>
</asp:TemplateField>
Это просто кнопка изображения, которая при нажатии вызывает событие RowCommand для GridView. Это очень удобно тем, что позволяет мне использовать CommandName и CommandArgument для определения кнопки, по которой была нажата кнопка, и по какой строке она была нажата.
Однако я считаю, что .NET ImageButton ограничен в том, что он не может отображать спрайты CSS, чтобы изменить изображение при наведении курсора. По крайней мере, я не мог заставить его работать, но, конечно, это не исключает того, каким образом это возможно.
В любом случае, я бы хотел использовать стандартный тег HTML-кнопки, потому что я знаю, как заставить его работать со своими спрайтами.
<button name="btnDown" id="btnDown" type="submit" class="downArrow"></button>
Но что я не знаю, как это сделать, так это заставить кнопку вызвать обратную передачу и вызвать событие RowCommand, и все же позволить мне каким-то образом получить доступ к параметрам CommandArgument и CommandName.