DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Sind Sie sicher?Löschen im Datagrid!

Ein häufige Frage in den Newsgroups und DevTrain Foren ist, wie kann ich eine Alert oder Confirm Message hochpoppen zu lassen, wenn ich eine Zeile im Datagrid löschen will.

Das lässt sich lösen.

Website

Zunächst braucht man eine ASPX Seite. In einer Template Columns wird der Löschen Button abgebildet.

<html>
 <body>
    <asp:Label id="Label1" runat="Server" />
   
    <form runat=server>
       <asp:DataGrid id="myDataGrid"
           OnItemCreated="DataGrid_ItemCreated"
           DataKeyField="ID"
           AutoGenerateColumns="True"
           runat="server">
 <Columns>
 <asp:TemplateColumn HeaderText="Delete?">
   <ItemTemplate>
     <asp:button id="btnDelete"

OnClick="DataGrid_DeleteRow" runat="Server" Text="Löschen" />
   </ItemTemplate>
 </asp:TemplateColumn>
 </Columns>

       </asp:DataGrid>
       <p>
    </form>
 </body>
 </html>

Dann nutzen wir das Event ItemCreated. Dieses wird gefeuert für jedes Item (Control) das im Datagrid erzeugt wird. Dort hängen wir an den Button einfach ein JScript an.

Der Code

Als erstes erzeugen wir ein Dataset das die Daten hält.
Auf den Detailcode wird hier verzichtet. Dieser sollte in der

Funktion Datenirgendwoherholen stehen.

Sub Page_Load(Sender As Object, e As EventArgs)
   If Not IsPostBack Then
     dim ds as new Dataset=Datenirgendwoherholen()
            myDataGrid.DataSource = ds.tables(0).defaultview
            myDataGrid.DataBind()
  End If
End Sub


Nun wird an jeden Button das JavaScript angehängt, das im Browser dann ausgeführt wird. Dazu muss im Browser das OnClick Event des HTML Input Buttons belegt sein.

Zunächst müssen wir den Button finden in der aktuellen Zeile mit der Methode Findcontrol. Diese wird ausgeführt auf dem Objekt e, das aus der Funktion Itemcreated übergeben wird. FindControl wird der Name des Buttons übergeben. Um das Objekt Modell richtig zu bekommen muss die Rückgabe noch in den Typ Button gecastet werden.Dann steht die Methode Add in der Attribut Collection zu Verfügung. Dieser übergibt man im ersten Paramter den Attributnamen (onclick) und im zweiten Parmeter das JavaScript.

Das Case Statement ist schmückendes Beiwerk um auch bei Alternatng Items richtig zu reagieren.

Sub DataGrid_ItemCreated(Sender As Object, e As

DataGridItemEventArgs)
        Select Case e.Item.ItemType
     Case ListItemType.Item
  Dim myDeleteButton As Button
  myDeleteButton =

e.Item.FindControl("btnDelete")
   myDeleteButton.Attributes.Add("onclick",_
   "return confirm('Sind Sie

sicher?');")

     Case ListItemType.AlternatingItem
  Dim myDeleteButton As Button
  myDeleteButton =

e.Item.FindControl("btnDelete")
  myDeleteButton.Attributes.Add("onclick",_
   "return confirm('Sind Sie

Sicher?');")
        End Select
End Sub


Der Rest ist der freien Kunst überlassen. Man könnten eine Meldung ausgeben oder andere Aktionen ausführen je nachdem ob Confirm true oder false liefert.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 22.05.2003
  Gültig bis: 20.08.2003
19 Ratings
Bewertung: 50,5%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG