使用GridView中的按钮进行回发

时间:2012-01-19 21:05:24

标签: asp.net gridview button postback

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

它只是一个图像按钮,单击时会引发GridView的RowCommand事件。它非常方便,它允许我使用CommandName和CommandArgument来确定单击的按钮以及单击它的行。

但是,我发现.NET ImageButton的局限性在于它无法显示CSS精灵以便在鼠标悬停时更改图像。至少我无法让它发挥作用,但当然这并不妨碍某种可能的方式。

无论如何,我想使用标准的HTML按钮标签,因为我知道如何让它与我的精灵一起工作。

<button name="btnDown" id="btnDown" type="submit" class="downArrow"></button>

但是我不知道该怎么做是让按钮引发回发并引发RowCommand事件并仍允许我以某种方式访问​​CommandArgument和CommandName参数。

3 个答案:

答案 0 :(得分:1)

您是否考虑过使用按钮字段来执行您想要执行的操作?

看看以下链接 ButtonFields within a GridView

答案 1 :(得分:1)

只需使用(original post here):

<asp:LinkButton ID="LinkButton1" runat="server">
    <div class="sprite-box_mac_osx_disc_button" />
</asp:LinkButton> 

当然使用自己的css,包括所有宽度,高度,背景和背景位置。并将Command和CommandArgument添加到LinkBut​​ton。

答案 2 :(得分:1)

正确我首先使按钮成为服务器控件,然后使用其各种属性作为commandName和CommandArgument的替代。另外,我会使用OnServerClick事件代替rowCommand。我最后会使用sender对象将其解析为hmt按钮并从其属性中提取值。我觉得我迷路了。

<button runat="server" name="Down" id="btnDown" title="<%# Container.DataItemIndex %>" type="submit" class="downArrow" OnServerClick="ClickMe"></button