Posts
400
Comments
213
Trackbacks
0
Edit-Funktion bei DataList

Das DataList-Objekt kann man nicht nur zum Visualisieren von Daten verwenden, sondern die angezeigten Daten lassen sich auch veändern.

Hier ein kleines, vereinfachtes Beispiel aus der Warenkorb-Funktion eines Shop-Systems. Die ausgewählten Artikel werden im Warenkorb angezeigt und die Anzahl soll verändert werden können.

Beschreibung des Skriptes:

Per DataReader wird der Inhalt des Warenkorbes ausgelesen und mittels eines DataList-Objektes angezeigt.

Die Editmaske wird im <EditItemTemplate> Bereich definiert. Hier wird die Anzahl in einem HTML Server-Control zum ändern angezeigt. Damit wir für den Datenbank-Update die entsprechende ID haben, wird diese in einem Hidden-Field mitgeführt.

Im ASP:DataList -Tag definieren wir die Events die wir benötigen:

<ASP:DataList id="DataList" OnEditCommand="DataList_Edit" OnUpdateCommand="DataList_Update" OnCancelCommand="DataList_Cancel" runat="server">

In den Linkbuttons werden per CommandNames die Events, die ausgelöst werden sollen, festgelegt.

In der Warenkorbansicht wird über den Link "bearbeiten" der Editmodus dieser Zeile aufgerufen und die Anzahl kann geändert werden. Mit dem Link "speichern"  wird über das Event "Update" die Updare-Prozedur aufgerufen welche die Werte ID und Anzahl einliest und die Datenbank updated. 

<%

@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<

html>
<
script language="VB" runat="server">

Sub liste_erstellen()
   Dim strConnect, strSQL As
String
   strConnect = System.Configuration.ConfigurationManager.AppSettings.Get("myConnection"
)
   strSQL =
"select id, kurztext, anzahl, preis , anzahl*preis as summe from kaufhaus_warenkorb"
   Dim DBConnection As New
OleDbConnection
   DBConnection.ConnectionString = strConnect
   Dim ObjDbCommand As New
OleDbCommand(strSQL, DBConnection)
   Dim daten As
OleDbDataReader
   DBConnection.Open()
   daten = ObjDbCommand.ExecuteReader()
   DataList.DataSource = Daten
   DataList.DataBind()
   DBConnection.Close()
End Sub

Sub Page_Load(Sender As Object, E As EventArgs)
   If Not
(Page.IsPostBack)
      liste_erstellen()
   End
If
End Sub
 

 Sub DataList_Edit(Sender As Object, E As DataListCommandEventArgs)
   DataList.EditItemIndex = CInt
(e.Item.ItemIndex)
   liste_erstellen()
End Sub
 

 Sub DataList_Update(Sender As Object, E As DataListCommandEventArgs)
   Dim EditText As
HtmlInputText
   Dim EditId As HtmlInputHidden   
   EditText = E.Item.FindControl("edit_anzahl"
)
   EditId = E.Item.FindControl("edit_id"
)
   Dim strConnect, strSQL As
String
   strConnect = System.Configuration.ConfigurationManager.AppSettings.Get("myConnection"
)
   strSQL = "update kaufhaus_warenkorb set anzahl = " & EditText.Value & " where id="
& EditId.Value
   Dim DBConnection As New
OleDbConnection
   DBConnection.ConnectionString = strConnect
   Dim ObjDbCommand As New
OleDbCommand(strSQL, DBConnection)
   DBConnection.Open()
   ObjDbCommand.ExecuteNonQuery()
   DBConnection.Close()

   Nachricht.Text = "Anzahl ge„ndert auf: " & EditText.Value
   DataList.EditItemIndex = -1

   liste_erstellen()
End Sub

Sub
DataList_Cancel(Sender As Object, E As DataListCommandEventArgs)
   Nachricht.Text =
"keine Žnderung"
   
DataList.EditItemIndex = -1
   liste_erstellen()
End Sub
)
   formatEur = String.Format("{0:c}", Decimal
.Parse(wert))
End
Function script>

<

body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<form id="Form1" runat="server">

 

<ASP:DataList id="DataList" OnEditCommand="DataList_Edit" OnUpdateCommand="DataList_Update" OnCancelCommand="DataList_Cancel" runat="server">

<HeaderTemplate>
<table border
="0">
<tr><td> </td><td>Anzahl</td><td>Artikel</td><td align="right">Preis/Stk.</td><td align="right">Summe</td></tr
>
</HeaderTemplate>


<ItemTemplate
>
<tr
>
<td width="130px" height
="30">
<asp:linkbutton ID="Linkbutton4" CommandName="Edit" runat="server">bearbeiten</asp:linkbutton>

</td>
<td align="right"><%#Eval("anzahl")%></td>

<td><%#Eval("kurztext")%>&nbsp;</td
>
<td align="right"><%#formatEur(Eval("preis"))%></td
>
<td align="right"><%#formatEur(Eval("summe"))%></td
>
</tr
>
</ItemTemplate>
>
<tr
>
<td width="130px" height
="30">
<asp:linkbutton ID="Linkbutton1" CommandName="Update" runat="server">speichern</asp:linkbutton>

<asp:linkbutton ID="Linkbutton5" CommandName="Cancel" runat="server">abbrechen</asp:linkbutton>

</td
>
<td
>
<input id="edit_anzahl" style="width:40" type="text" value='<%#eval("anzahl")%>' runat
="server"/>
<input id="edit_id" type="hidden" value='<%#eval("id")%>' runat="server"/>

</td
>
<td><%#Eval("kurztext")%>&nbsp;</td
>
<td align="right"><%#formatEur(Eval("preis"))%></td
>
<td align="right"><%#formatEur(Eval("summe"))%></td
>
<td></td
>
</tr
>
</EditItemTemplate>


<FooterTemplate
>
</table
>
</FooterTemplate>


</ASP:DataList
>

</form>


<asp:Label ID="Nachricht" runat="server" Text="Label"></asp:Label
>

</
body
>
</
html>

<EditItemTemplate Function formatEur(ByVal wert As String

</

posted on Monday, February 13, 2006 2:22 PM Print
Comments
Gravatar
# Out door fire pit
Out door fire pit
5/12/2012 8:08 PM
I love to read and learn about web page and programing
Gravatar
# washing machine repairs
washing machine repairs
5/12/2012 8:13 PM
now this time I learn about HTML, CSS and codeing

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 1 and 1 and type the answer here: