Avatar billede mosquito Nybegynder
06. april 2006 - 14:37 Der er 6 kommentarer og
1 løsning

Hvordan tilføjer jeg client script til en ButtonField i GridView

Jeg har et GridView som jeg runtime tilføjer en 'delete' ButtonField i klassens OnPreRender metode.

Det hele fungerer fint, og sletter også den rigtige række i databasen.

Men da en 'edit' ButtonField er nabo til 'delete' ButtonField, ønsker jeg at sikre at 'delete' ikke sletter utilsigtet. Jeg vil derfor gøre brug af et javascript, så brugeren kan nå at fortryde.

Mit spørgsmål er derfor:

Hvordan tilføjer jeg et script til min 'delete' ButtonField?
Avatar billede dr_chaos Nybegynder
06. april 2006 - 14:55 #1
Du kan lave en item template med en knap:
<asp:Button ID="Button2" runat="server" OnClientClick="return confirm('Er du sikker på at du ønsker at slette ?');" CommandArgument=<%# Eval("dinidkolonne") %> OnClick="Slet_Click" Text="Slet" />

i code behind har du så

protected void Slet_Click(object sender, EventArgs e)
{
Button b = (Button)sender;
int i = (int)b.CommandArgument;

//slet id fra db.
}
Avatar billede mosquito Nybegynder
06. april 2006 - 15:11 #2
dr_chaos> Jeg forstår ikke helt pointen i dit foreslag. Jeg tilføjer jo en ButtonField dynamisk; havde det været en almindelig Button har jeg ingen problemer, da Button har en Attributes property.

Måske det vil hjælpe med lidt kode

if(deleteIsOptional)
{
ButtonField btnDelete = new ButtonField();
btnDelete.ButtonType = ButtonType.Image;
btnDelete.ImageUrl = "~/images/delete16x16.gif";
btnDelete.CommandName = "Delete";
btnDelete.Visible = true;
btnDelete.HeaderText = "Delete";
btnDelete.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
btnDelete.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
btnDelete.ItemStyle.Width = 40;
gw.Columns.Add(btnDelete);
}

hvis jeg kan tilføje denne knap en 'OnClientClick' dynamisk er mit problem løst, men ButtonField har ikke en Attributes property og det er her mine grå hår får gødning.
Avatar billede aspnet Nybegynder
06. april 2006 - 16:45 #3
Noget i denne her stil?

Protected Sub GridViewID_ItemDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridVeiwID.ItemDeleting       
    If MsgBox("Er du sikker på du vil slette?", MsgBoxStyle.YesNo, "Delete Confirmation") = MsgBoxResult.No Then
        e.Cancel = True
    End If
End Sub
Avatar billede snepnet Nybegynder
08. april 2006 - 01:44 #4
denne her en en hurtig vej til funktionaliteten for ButtonType.Image og ButtonType.Link

public class ConfirmField : ButtonField
{
    public override void InitializeCell(DataControlFieldCell cell, DataControlCellType cellType, DataControlRowState rowState, int rowIndex)
    {
        base.InitializeCell(cell, cellType, rowState, rowIndex);
        if (cellType == DataControlCellType.DataCell)
        {
            try
            {
                WebControl wbctrl = cell.Controls[0] as WebControl;
                if (wbctrl != null)
                {
                    wbctrl.Attributes.Add("onclick", "return confirm('er du sikker');");
                }
            }
            catch { ;}
        }
    }
}

så skifte du bare
ButtonField btnDelete = new ButtonField();
ud med
ConfirmField btnDelete = new ConfirmField();

mvh
Avatar billede mosquito Nybegynder
06. maj 2006 - 17:58 #5
aspnet> jeg koder i C#, hvilket der burde have fremgået af mit spørgsmål.
Avatar billede mosquito Nybegynder
06. maj 2006 - 18:05 #6
snepnet> En flovmand .... kan se jeg har stillet lignende spørgsmål tidligere, som du også har svaret på. Undskylder, men smid svar og point er dine som tak for hjælpen.

..men her er en bedre løsning på mit spørgsmål, som jeg ellers havde løst anderledes og knap så elegant.

Stress og frustration må jeg konkludere, er en dårlig kombination.
Avatar billede snepnet Nybegynder
07. maj 2006 - 20:49 #7
sådan kan det gå :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester