DevTrain

Autor: Andreas Rauch

ASP+: Datagrid Folge 2 Editieren

Als nächstes gestalten wir unser Grid editierbar. Dabei gibt es eine Menge zu beachten.

Edit und nicht Edit Spalten
Editfelder mit besonderen Werten (zb Checkbox)
Buttons zum bearbeiten und speichern
Design im Edit Mode


Das einbauen der Edit Funktion wird über das Attribut oneditclick aktiviert. Dort wird die Funktion angegeben, die sich um das editieren kümmert.

<asp:DataGrid id=DataGrid1 runat="server" ForeColor="Black" oneditcommand="editClick">

Die Funktion muss zwei Paramter enthalten, der zweite muss vom Typ DataGridCommandEventArgs sein.

public sub editClick(Source as Object, E as DataGridCommandEventArgs)
end sub

Um Einfluss auf das Design zu haben, muss das komplette Grid neu gestaltet werden. Als erstes muss das Automatische erstellen der Spalten abgeschaltet werden. Dies passiert über  autogeneratecolumns. Dann muss jede Spalte einzeln erstellt werden. Eine Spalte die nicht editierbar sein soll, muss auf Readonly gesetzt werden. Das erweist sich zb für eine ID Spalte als nützlich.

Um jedesmal beim Reload die Daten neu einzulesen, wurde die Funktion newBind geschaffen. Diese kapselt die den Datenzugriff. Es soll ja nach jedem Button Click auch wieder Daten zur Verfügung stehen.
Für jede Funktion wie Update, Edit oder Cancel muss eine eigene Behandlung programmiert werden. So muss zb beim Editieren die Spalte ausgewählt werden. Dies geschieht über den Index. Wenn Sie den Index auf -1 setzen verlassen Sie den Edit Mode wieder.


<%@ Page Language="vb" %>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.SQL"%>

<html><head></head>
  <body>
<script runat=server>

public sub Page_Load(Source as Object, E as EventArgs)

 if not Page.IsPostBack then
     newBind()
  
 end if
 
end sub
public sub newBind()
 dim DS as new DataSet
 dim cmd as SQLDataSetCommand
 cmd= new SQLDataSetCommand("select * from authors","server=localhost;database=pubs;uid=sa;pwd=")
 cmd.FillDataSet(DS,"autoren")
 DataGrid1.DataSource=DS.Tables(0)DefaultView
 DataGrid1.Databind()
end sub

public sub editClick(Source as Object, E as DataGridCommandEventArgs)
 DataGrid1.EditItemIndex=E.Item.ItemIndex
 
 newBind()
end sub
public sub UpdateClick(Source as Object, E as DataGridCommandEventArgs)
 DataGrid1.EditItemIndex=E.Item.ItemIndex
 newBind()
end sub
public sub CancelClick(Source as Object, E as DataGridCommandEventArgs)
 DataGrid1.EditItemIndex=-1
 newBind()
end sub
</script>

    <form id="grid1" method="post" runat="server">
<asp:DataGrid id=DataGrid1 runat="server" ForeColor="Black" oneditcommand="editClick" onupdatecommand="updateclick" oncancelcommand="CancelClick" autogeneratecolumns="False">
                    <property name="Columns">
                      <asp:EditCommandColumn
                      buttontype="PushButton"
                      canceltext="Abbruch"
                      edittext="Edit"
                      updatetext="Update" />
                     <asp:boundcolumn datafield="au_id"
                      headertext="ID"
                      readonly="True"
                     />
                      <asp:boundcolumn datafield="au_fname"
                      headertext="Name"
                      readonly="false"
                     />
                      <asp:boundcolumn datafield="au_lname"
                      headertext="Name"
                      readonly="false"
                     />
                    </property>
                  
                  </asp:DataGrid>

    </form>

  </body></html>


Erfasst am: 28.02.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=350
© Copyright 2003 ppedv AG - http://www.ppedv.de