DevTrain Startseite Visual Studio 1 Magazin  
  
  
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
        
Mehrfach Auswahl im Gridview

Robert Rausch fragt im Forum ob im von mir geschriebenen Buch ASP.NET 2.0 Crashkurs Beta 2 auch was zur mehrfachselektion im Gridview steht. Und ich muss gestehen, nein, da es fast so wie bisher mit dem Datagrid funktioniert. Aber ich hab noch einen drauf gesetzt das Gridview soll auch komfortabler sein. Aber lesen Sie einfach weiter.

Grobkonzept

Mit Hilfe eines Template Fields wird im Gridview eine Checkbox in jede Zeile eingeblendet. Ein zusätzlicher Button löst dann ein Event aus in dem ausgewertet wird, welche Boxen Checked true haben.

<asp:TemplateField>

<ItemTemplate>

<asp:CheckBox ID="wahl" runat="server" />

</ItemTemplate>

</asp:TemplateField>

Dabei wird einfach jede Reihe des Girdviews durchlaufen und das Control mit dem Namen wahl gesucht und in eine Checkbox gecastet. Wenn dieses als Ergebnis true liefert kann man weitere Programmlogik durchlaufen. In diesem Beispiel den ersten Datakey auslesen. Mit Values würde man eine Auflistung aller Keys erhalten.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Dim i As Int16

For i = 0 To GridView1.Rows.Count - 1

If CType(GridView1.Rows(i).FindControl("wahl"), CheckBox).Checked() Then

Response.Write("gewählt" & GridView1.DataKeys(i).Value.ToString)

End If

Next

End Sub

Sehr interessant sind hier auch die neuen Funktionen des Gridviews wie update. Diese aktzeptieren die Row Id als Parameter und führen dann den Update durch. Um z.B. alle selektierten Reihen zu löschen, reicht:

GridView1.DeleteRow(i)

Mehr Komfort

Ich möchte nun noch die Möglichkeit einbauen alle Zeilen auf einmal zu selektieren. Das funktioniert eigentlich am besten im Browser per JScript. Dazu bekommt das Template Field noch eine weitere Checkbox im Headertemplate. Diese Checkbox ruft einen JScript Funktion auf mit dem Namen SelectAll.

 <asp:TemplateField>
 <HeaderTemplate>
   <asp:CheckBox ID="Alle"  OnClick="javascript: return selectAll (this.checked);"
 runat="server" />
 </HeaderTemplate>
 <ItemTemplate>
   <asp:CheckBox ID="wahl" runat="server" />
  </ItemTemplate>
</asp:TemplateField>

Nun braucht man ein wenig JScript Kenntnisse. Es werden alle Control in der Form durchlaufen. Wenn der Name wahl enthält wird der checked Wert dem Wert der Master Checkbox zugwiesen.

<script language=javascript>

function selectAll (alle)

{ var frm = document.forms[0];

for (i=0; i<frm.length; i++)

{if (frm.elements[i].id.indexOf('wahl') != -1)

{frm.elements[i].checked = alle;

}}}</script>

Damit Sie auch wissen wie es aussehen soll, hier das fertige Beispiel im Browser. Die gewählten IDs werden angezeigt.

 

 

 


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

  Erfasst am: 19.05.2005
  Gültig bis: 17.08.2005
29 Ratings
Bewertung: 62,1%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG