【问题标题】:Replace buttoncolumn "Delete" with a Image Button in Gridview将按钮列“删除”替换为 Gridview 中的图像按钮
【发布时间】:2011-11-09 03:10:54
【问题描述】:
这是我的 Gridview 代码
<asp:DataGrid id="dg" runat="server" ondeletecommand="Delete_Item" >
<columns>
<asp:buttoncolumn buttontype="LinkButton" commandname="Delete" text="Remove" />
</columns>
<HeaderStyle BackColor="#95C736" ForeColor="White" Font-Bold="True" />
</asp:DataGrid>
我想用图像替换我的按钮列,我必须对我的 GridView 做什么?
【问题讨论】:
标签:
asp.net
gridview
datagrid
【解决方案1】:
我会为此使用模板列:
<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:ImageButton ID="btnDelete" runat="server" ImageUrl="/images/delete.png" CommandName="Delete" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
【解决方案2】:
将按钮列替换为 TemplateColumn 允许您将标准的 asp 控件放入其中。然后就可以正常处理Datagrid_ItemCommand事件了。
<asp:DataGrid ID="dgTest" runat="server">
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:ImageButton ID="ibtnDelete" runat="server" CommandName="cmdDelete"
ImageUrl="~/images/delete.png" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
ItemCommand 处理程序类似于:
Protected Sub dgTest_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgTest.ItemCommand
If (e.CommandName = "cmdDelete") Then
Response.Write("the command argument was :" & e.CommandArgument)
End If
End Sub
您需要做的唯一另一件事是将一些数据绑定到图像按钮以作为命令参数。我通常会这样做:
Protected Sub dgTest_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgTest.ItemDataBound
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim di As FAQTable = e.Item.DataItem
DirectCast(e.Item.FindControl("ibtn"), ImageButton).CommandArgument = di.FAQID
End If
End Sub
您还可以使用 asp:image 控件和 asp:Hyperlink 控件来获得相同的结果。
【解决方案3】:
我刚刚做的一件非常棒的事情是将编码的 html 放入文本中。 Text="&lt;img src='images/btn-find.png' class='ttip' alt='View Details' /&gt;"这让我知道只放了img src,还指定了一个类和一个alt标签。
您需要做的就是使用单个刻度线并将您的<> 编码为gt 和lt。