GridView (ASP.NET 2.0)?
От: Александер Малафеев Россия http://www.meet-tech.com
Дата: 19.12.05 05:47
Оценка:
Вопрос в следующем: у меня есть на страничке GridView. Мне нужно с его помощью удалять записи из таблицы(с этим проблем нет), а вот как сделать чтобы при нажатии на delete(который стандартно генерится) вылезло окошко для подтверждения на удаление, можно ли там как нибуть впихнуть клиентский скрипт?
Re: GridView (ASP.NET 2.0)?
От: Drussgad Украина  
Дата: 19.12.05 08:47
Оценка:
Здравствуйте, Александер Малафеев, Вы писали:

АМ>Вопрос в следующем: у меня есть на страничке GridView. Мне нужно с его помощью удалять записи из таблицы(с этим проблем нет), а вот как сделать чтобы при нажатии на delete(который стандартно генерится) вылезло окошко для подтверждения на удаление, можно ли там как нибуть впихнуть клиентский скрипт?


добавляй на пререндер клиентский скрипт кнопке делит
Re[2]: GridView (ASP.NET 2.0)?
От: Drussgad Украина  
Дата: 19.12.05 09:12
Оценка:
Здравствуйте, Drussgad, Вы писали:

D>Здравствуйте, Александер Малафеев, Вы писали:


АМ>>Вопрос в следующем: у меня есть на страничке GridView. Мне нужно с его помощью удалять записи из таблицы(с этим проблем нет), а вот как сделать чтобы при нажатии на delete(который стандартно генерится) вылезло окошко для подтверждения на удаление, можно ли там как нибуть впихнуть клиентский скрипт?


D>добавляй на пререндер клиентский скрипт кнопке делит


сори, но скорее всего для стандартной кнопки не получится...надо делать темлпейт колумн и уже для него генерить скрипт
GridView (ASP.NET 2.0)?
От: Аноним  
Дата: 19.12.05 05:58
Оценка:
Я создал свой класс:
    public class DeleteLinkButton : LinkButton
    {
        #region Properties
        private String _confirmMessage;
        public String ConfirmMessage
        {
            get { return _confirmMessage; }
            set { _confirmMessage = value; }
        }
        #endregion
        protected override void Render(HtmlTextWriter writer)
        {
            String message =
                _confirmMessage == null ? Helper.Const.Message.DELETE_CONFIRM : _confirmMessage;
            if (message != null)
            {
                this.OnClientClick = "return confirm('" + message + "')";
            }
            base.Render(writer);
        }
    }





данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: GridView (ASP.NET 2.0)?
От: Александер Малафеев Россия http://www.meet-tech.com
Дата: 19.12.05 10:37
Оценка:
Здравствуйте, gone_gone, Вы писали:

_>Я создал свой класс:[vb] public class DeleteLinkButton : LinkButton


А как отловить нажатие этой кнопки и узнать номер ряда для которого эта кнопка нажата?

_>
данное сообщение получено с www.gotdotnet.ru

_>ссылка на оригинальное сообщение
Re: GridView (ASP.NET 2.0)?
От: Аноним  
Дата: 19.12.05 10:49
Оценка:
А чем отличается, если ты нажимаешь просто, возвращаешь true и удаляешь, и нажимаешь, подтверждаешь, возвращаешь true и удаляешь?
Что изменилось?
Попробуй...


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: GridView (ASP.NET 2.0)?
От: Александер Малафеев Россия http://www.meet-tech.com
Дата: 19.12.05 11:15
Оценка:
Здравствуйте, gone_gone, Вы писали:

_>А чем отличается, если ты нажимаешь просто, возвращаешь true и удаляешь, и нажимаешь, подтверждаешь, возвращаешь true и удаляешь?

_>Что изменилось?
_>Попробуй...

Дурацкий конечно вопрос: а как заменить LinkButton на твой:
я делал следующим образом: добавил стандартный Delete link, сконвертил его в шаблон, и в коде заменил LinkButton на DeleteLinkButton у меня выдает ошибку, GridView1:Unknown server tag 'asp:DeleteLinkButton'.
Как надо правильно делать?
GridView (ASP.NET 2.0)?
От: Аноним  
Дата: 19.12.05 11:28
Оценка: 18 (1)
А так не подойдёт?
Сначала ковертируешь CommandField в TemplateField, а затем добавляешь вызов клиентского скрипта:

<asp:ImageButton ID="btnDelete" runat="server" CommandName="Delete" ImageUrl="~/Images/delete.png" ToolTip="Delete" onClientClick="return confirm('Удалить запись?');" />






данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: GridView (ASP.NET 2.0)?
От: Александер Малафеев Россия http://www.meet-tech.com
Дата: 19.12.05 11:41
Оценка:
Здравствуйте, manger, Вы писали:

M>А так не подойдёт?

M>Сначала ковертируешь CommandField в TemplateField, а затем добавляешь вызов клиентского скрипта:

M><asp:ImageButton ID="btnDelete" runat="server" CommandName="Delete" ImageUrl="~/Images/delete.png" ToolTip="Delete" onClientClick="return confirm('Удалить запись?');" />

Да, само-то, спасибо!




M>
данное сообщение получено с www.gotdotnet.ru

M>ссылка на оригинальное сообщение
Re[2]: GridView (ASP.NET 2.0)?
От: Аноним  
Дата: 19.12.05 11:44
Оценка:
Я делаю так:
                       <asp:TemplateField>
                            <ItemTemplate>
                                <UC:DeleteLinkButton ID="lnkDelete" runat="server" CommandName="Delete" Text="Delete" />
                            </ItemTemplate>
                        </asp:TemplateField>





данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: GridView (ASP.NET 2.0)?
От: Аноним  
Дата: 19.12.05 12:54
Оценка:
Можно ещё и динамически:

Protected Sub Grid_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
Dim lnkBtn As LinkButton = CType(e.Row.FindControl("btnDelete"), LinkButton)
If Not (lnkBtn Is Nothing) Then
'If (lnkBtn.CommandName = "delete") Then
lnkBtn.Attributes.Add("onclick", "return confirm('Удалить запись?')")
'End If
End If
End Sub

Но решение от gone_gone мне больше нравится.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: GridView (ASP.NET 2.0)?
От: Аноним  
Дата: 13.03.07 14:49
Оценка:
Может тема уже и заезженная, но у меня возник такой вопрос.
Есть код, кторый цепляет на контрол из стандартного CommandField подтверждение:
public static void AddConfirmDelete(GridView gv, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            foreach (DataControlField dcf in gv.Columns)
            {
                CommandField cf = dcf as CommandField;
                if (cf != null)
                {
                    TableCell cell = e.Row.Cells[gv.Columns.IndexOf(dcf)];
                    foreach (Control ctl in cell.Controls)
                    {
                        switch (cf.ButtonType)
                        {
                            case ButtonType.Button:
                                if (ctl is Button && ((Button)ctl).Text == cf.DeleteText)
                                {
                                    Button btn = (Button)ctl;
                                    //btn.OnClientClick = "return confirm(\"Are you sure?\")";
                                    btn.Attributes.Add("onclick", "return confirm(\"Are you sure?\")");
                                }
                                break;
                            case ButtonType.Image:
                                if (ctl is ImageButton && ((ImageButton)ctl).ImageUrl == cf.DeleteImageUrl)
                                {
                                    ImageButton ib = (ImageButton)ctl;
                                    //ib.OnClientClick = "return confirm(\"Are you sure?\")";
                                    ib.Attributes.Add("onclick", "return confirm(\"Are you sure?\")");
                                }
                                break;
                            case ButtonType.Link:
                                if (ctl is LinkButton && ((LinkButton)ctl).Text == cf.DeleteText)
                                {
                                    LinkButton lb = (LinkButton)ctl;
                                    lb.Attributes.Add("onclick", "return confirm(\"Are you sure?\")");
                                }
                                break;
                        }
                        
                    }
                }
            }
        }
    }


Так вот, когда тип кнопок стоит ButtonType.Link в этой колонке, то все работает. А если Image или Button, то спрашивает подтверждение, а удалять не удаляет. В дебаге событие не срабатывает. Может кто-то колупался уже с таким???
http://blogs.gotdotnet.ru/personal/BlackHawk/
С ув. Алексей Герасимов Kiev .NET UG


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: GridView (ASP.NET 2.0)?
От: Аноним  
Дата: 04.07.08 05:14
Оценка: 1 (1)
Здравствуйте, BlackHawk, Вы писали:

BH>Может тема уже и заезженная, но у меня возник такой вопрос.

BH>Есть код, кторый цепляет на контрол из стандартного CommandField подтверждение:
public static void AddConfirmDelete(GridView gv, GridViewRowEventArgs e)
BH>    {
BH>        if (e.Row.RowType == DataControlRowType.DataRow)
BH>        {
BH>            foreach (DataControlField dcf in gv.Columns)
BH>            {
BH>                CommandField cf = dcf as CommandField;
BH>                if (cf != null)
BH>                {
BH>                    TableCell cell = e.Row.Cells[gv.Columns.IndexOf(dcf)];
BH>                    foreach (Control ctl in cell.Controls)
BH>                    {
BH>                        switch (cf.ButtonType)
BH>                        {
BH>                            case ButtonType.Button:
BH>                                if (ctl is Button && ((Button)ctl).Text == cf.DeleteText)
BH>                                {
BH>                                    Button btn = (Button)ctl;
BH>                                    //btn.OnClientClick = "return confirm(\"Are you sure?\")";
BH>                                    btn.Attributes.Add("onclick", "return confirm(\"Are you sure?\")");
BH>                                }
BH>                                break;
BH>                            case ButtonType.Image:
BH>                                if (ctl is ImageButton && ((ImageButton)ctl).ImageUrl == cf.DeleteImageUrl)
BH>                                {
BH>                                    ImageButton ib = (ImageButton)ctl;
BH>                                    //ib.OnClientClick = "return confirm(\"Are you sure?\")";
BH>                                    ib.Attributes.Add("onclick", "return confirm(\"Are you sure?\")");
BH>                                }
BH>                                break;
BH>                            case ButtonType.Link:
BH>                                if (ctl is LinkButton && ((LinkButton)ctl).Text == cf.DeleteText)
BH>                                {
BH>                                    LinkButton lb = (LinkButton)ctl;
BH>                                    lb.Attributes.Add("onclick", "return confirm(\"Are you sure?\")");
BH>                                }
BH>                                break;
BH>                        }
                        
BH>                    }
BH>                }
BH>            }
BH>        }
BH>    }


BH> Так вот, когда тип кнопок стоит ButtonType.Link в этой колонке, то все работает. А если Image или Button, то спрашивает подтверждение, а удалять не удаляет. В дебаге событие не срабатывает. Может кто-то колупался уже с таким???


BH>
данное сообщение получено с www.gotdotnet.ru

BH>ссылка на оригинальное сообщение


Я решил эту проблему так.

В RowDataBound вставил следующий код:
ImageButton btnDel = (ImageButton)e.Row.Cells[6].Controls[2];
btnDel.Attributes.Add("onclick", "if (confirm_delete()) {__doPostBack('" + GreedView.UniqueID + "','Delete$" + e.Row.RowIndex.ToString() + "')} else { return false;}");


Соответственно confirm_delete() — javascript функция, в которой отображается окошко с мессагой.
Re: GridView (ASP.NET 2.0)?
От: kicker Россия  
Дата: 07.07.08 10:43
Оценка:
Здравствуйте, manger, Вы писали:

M>А так не подойдёт?

M>Сначала ковертируешь CommandField в TemplateField, а затем добавляешь вызов клиентского скрипта:

M><asp:ImageButton ID="btnDelete" runat="server" CommandName="Delete" ImageUrl="~/Images/delete.png" ToolTip="Delete" onClientClick="return confirm('Удалить запись?');" />






M>
данное сообщение получено с www.gotdotnet.ru

M>ссылка на оригинальное сообщение

Вот други,... у меня похожая проблема была . но с началом разобрался своими силами...
терь вопрос
сам линк в гриде выглядит так

<asp:LinkButton ID="m_lbtnAdd" 
                OnClientClick="return confirm('удалить запись "+'<%# Eval("nInternalID") %>'+"?');"  
                runat="server" 
                CausesValidation="false" 
                CommandName="" CommandArgument='<%# (DataBinder.Eval(Container.DataItem, "nUID"))%>'
                Text="Удалить">

то есть делит своими ручками добавлял.
терь вопрос. выдаёт ошипку "The server tag is not well formed."
на строчку OnClientClick
где я туплю?
заранее спасибо.
нашли орфографическую ошибку???- оставьте себе.
Re[2]: GridView (ASP.NET 2.0)?
От: kicker Россия  
Дата: 08.07.08 05:25
Оценка:
K>Вот други,... у меня похожая проблема была . но с началом разобрался своими силами...
K>терь вопрос
K>сам линк в гриде выглядит так

K>
K><asp:LinkButton ID="m_lbtnAdd" 
K>                OnClientClick="return confirm('удалить запись "+'<%# Eval("nInternalID") %>'+"?');"  
K>                runat="server" 
K>                CausesValidation="false" 
K>                CommandName="" CommandArgument='<%# (DataBinder.Eval(Container.DataItem, "nUID"))%>'
K>                Text="Удалить">
K>

K>то есть делит своими ручками добавлял.
K>терь вопрос. выдаёт ошипку "The server tag is not well formed."
K>на строчку OnClientClick
K>где я туплю?
K>заранее спасибо.

спасибо... разрулил ещё вчера, забыл отписаться... \
в итоге сделал так

asp.net
<asp:LinkButton ID="m_lbtnAdd" OnClientClick='<%# EvalMessage(Eval("nCarInternal")) %>'  runat="server" CausesValidation="false" CommandName="" CommandArgument='<%# (DataBinder.Eval(Container.DataItem, "nUID"))%>'
                            Text="Удалить"></asp:LinkButton>

c#

public string EvalMessage(object _nInternalID)
    {
        return string.Format("return confirm('удалить запись? г.н. {0}?');", _nInternalID);
    }
нашли орфографическую ошибку???- оставьте себе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.