У меня есть GridView, у которого есть ссылка для удаления записи. Я создал класс DeleteButtonField, но хочу заменить текст изображением (значком). Это возможно? Вот мой GridView:Можно заменить ButtonField на изображение в GridView?
<asp:GridView
ID="GridView1"
runat="server"
<.. removed dome properties ..>
>
<Columns>
<CustomControls:DeleteButtonField ConfirmText="Delete this record?" />
<.. other columns ..>
</Columns>
</asp:GridView>
и вот мой класс DeleteButtonField:
using System;
using System.Web.UI.WebControls;
namespace CustomControls
{
public class DeleteButtonField : ButtonField
{
private string _confirmText = "Delete this record?";
public string ConfirmText
{
get { return _confirmText; }
set { _confirmText = value; }
}
public DeleteButtonField()
{
this.CommandName = "Delete";
this.Text = "Delete";
this.ImageUrl = "App_GlobalResources/Del.png"; // doesn't work
}
public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex)
{
base.InitializeCell(cell, cellType, rowState, rowIndex);
if (cellType == DataControlCellType.DataCell)
{
WebControl button = (WebControl)cell.Controls[0];
button.Attributes["onclick"] = String.Format("return confirm('{0}');", _confirmText);
}
}
}
}
Возможно ли это? Как вы можете видеть, я добавляю следующий код в свой класс DeleteButtonField.cs, но он не имел никакого эффекта: this.ImageUrl = "App_GlobalResources/Del.png";
Спасибо.
@Brian, у меня есть проблема. Записи не удаляются, когда я нажимаю на изображение. Вы знаете, что могло пойти не так? –
Марк, посмотрите на код выше. Должен заставить вас работать сейчас. Я должен придерживаться своих орудий, поскольку я изначально собирался написать для вас пример TemplateField. Он лучше справляется с задачами (postbacks и т. Д.). :) –
@Brian, спасибо за это. Когда я запускаю это, веб-сервер ASP.NET Development разбивается! –