Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
[b]If not IsPostBack Then[/b]
FillDataList()
[b]End If[/b]
End Sub
Frågan#1
En datalist som ska uppdateras, med hjälp av response.write har jag sett
att det värde som tas från textrutan (där det nya värdet skrivs in) är
samma som plockas ut ur databasen, alltså uppdateras databasen med
det gamla värdet istället för det nya..
jag vet inte vad jag har gjort för det funkade förrut..
borde ha med ImageDataList_UpdateCommand att göra.
antagligen detta som inte stämmer riktigt kanske?
e.Item.FindControl
<%@ Page Language="VB" Debug="True"%>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDB" %>
<%@ import Namespace="System.Web.UI.WebControls" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
'<- Databasanslutning ->
Dim myConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" &_
Server.MapPath("db/images.mdb"))
'***********************************************************
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
FillDataList()
End Sub
'***********************************************************
Protected Sub FillDataList()
Dim strSQL As String = "SELECT * FROM galleries"
Dim myCommand As New OleDb.OleDbCommand(strSQL, myConnection)
Dim myReader As OleDbDataReader
Try
myConnection.Open()
myReader = myCommand.ExecuteReader
ImageDataList.DataSource = myReader
ImageDataList.DataBind()
'myReader.Close()
myConnection.Close()
Catch ex As Exception
'Ev Felhantering
lblMessage.Text = ex.tostring
End Try
End Sub
'***********************************************************
sub ImageDataList_ItemCommand(Sender as object, e as DataListCommandEventArgs)
ImageDataList.SelectedIndex = e.Item.ItemIndex
FillDataList()
end sub
'***********************************************************
sub ImageDataList_EditCommand(Sender as object, e as DataListCommandEventArgs)
ImageDataList.EditItemIndex = e.Item.ItemIndex
FillDataList()
end sub
'***********************************************************
sub ImageDataList_CancelCommand(Sender as object, e as DataListCommandEventArgs)
ImageDataList.EditItemIndex = -1
FillDataList()
end sub
'***********************************************************
sub ImageDataList_UpdateCommand(Sender as object, e as DataListCommandEventArgs)
Dim Id As String = CType(e.Item.FindControl("EditID"), Label).Text
Dim EditedNamn As String = CType(e.Item.FindControl("EditName"), TextBox).Text
Dim EditedLocation As String = CType(e.Item.FindControl("EditLocation"), TextBox).Text
'response.write(Id & "---" & EditedNamn & "---" & EditedLocation & "<br>")
Dim strSQL2 As String = "UPDATE galleries SET " & _
"location_name = '" & EditedNamn & "', " & _
"location_url = '" & EditedLocation & "' " & _
"WHERE location_ID = " & Id
'response.write(strSQL2 & "<br>")
Try
Dim myCommand2 As New OleDbCommand(strSQL2, myConnection)
myConnection.Open()
Dim numRowsAffected As Integer = 0
numRowsAffected = myCommand2.ExecuteNonQuery()
myConnection.Close()
'response.write(numRowsAffected)
If numRowsAffected <> 0 Then
lblMessage.Text = "Redigerad!"
Else
lblMessage.Text = "INTE redigerad!"
End If
ImageDataList.EditItemIndex = -1
FillDataList()
Catch ex As Exception
'# Errorhantering, logga felmeddelande !!
lblMessage.Text = ex.ToString
End Try
end sub
'***********************************************************
sub ImageDataList_DeleteCommand(Sender as object, e as DataListCommandEventArgs)
Dim Id As String = CType(e.Item.FindControl("EditID"), Label).Text
Dim strSQL4 As String = "DELETE * FROM galleries WHERE location_ID = " & Id
Try
Dim myCommand4 As New OleDbCommand(strSQL4, myConnection)
myConnection.Open()
Dim numRowsAffected As Integer = 0
numRowsAffected = myCommand4.ExecuteNonQuery()
myConnection.Close()
If numRowsAffected <> 0 Then
lblMessage.Text = "Inlägget togs bort!"
Else
lblMessage.Text = "Inlägget togs INTE bort!"
End If
ImageDataList.EditItemIndex = -1
FillDataList()
Catch ex As Exception
'# Errorhantering, logga felmeddelande !!
lblMessage.Text = ex.Message
End Try
end sub
'***********************************************************
Private Sub BtnAdd_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim TheNewName As String = NewName.Text
Dim TheNewLocation As String = NewLocation.Text
If TheNewName = "" Or TheNewLocation = "" Then
lblMessage.Text = "Du måste skriva Namn & Sökväg !"
FillDataList()
Exit Sub
End If
Dim strSQL3 As String = "INSERT INTO galleries " & _
"(location_name, location_url) VALUES (" & _
"'" & TheNewName & "', " & _
"'" & TheNewLocation & "')"
Try
Dim myCommand3 As New OleDbCommand(strSQL3, myConnection)
myConnection.Open()
Dim numRowsAffected As Integer = 0
numRowsAffected = myCommand3.ExecuteNonQuery()
myConnection.Close()
If numRowsAffected <> 0 Then
lblMessage.Text = ""
FillDataList()
Response.Redirect("admin.aspx")
Else
lblMessage.Text = "Inget tillagt!"
End If
Catch ex As Exception
'# Errorhantering, logga felmeddelande !!
lblMessage.Text = ex.tostring
End Try
End Sub
'***********************************************************
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Administration för Galleri</title>
<!--<link href="myCSSstyle.css" rel="stylesheet" type="text/css">-->
</head>
<body>
<form id="myForm" method="post" runat="server">
<div align="left">
Gallerier
<table border="1">
<tr><td colspan="2">Lägg till:</td></tr>
<tr><td>Namn</td>
<td><asp:TextBox id="NewName" runat="server"/></td>
</tr>
<tr><td>Sökväg</td>
<td><asp:TextBox id="NewLocation" runat="server"/></td>
</tr>
<tr><td colspan="2"><asp:button id="BtnAdd" onclick="BtnAdd_Click" runat="server" Text="Lägg till"/></td></tr>
</table>
</div>
<div align="center">
<asp:label id="lblMessage" class="ErrorMessage" runat="server" />
</div>
<asp:datalist BorderWidth="0px" id="ImageDataList" runat="server" Width="700px"
RepeatLayout="Table" RepeatDirection="Vertical" RepeatColumns="0" GridLines="None"
HorizontalAlign="center"
OnItemCommand="ImageDataList_ItemCommand"
OnEditCommand="ImageDataList_EditCommand"
OnCancelCommand="ImageDataList_CancelCommand"
OnUpdateCommand="ImageDataList_UpdateCommand"
OnDeleteCommand="ImageDataList_DeleteCommand">
<ItemTemplate>
<asp:Label id="lblID" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "location_ID")%>'/>
<asp:Label id="lblName" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "location_name")%>'/>
<asp:Label id="lblUrl" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "location_url")%>'/>
<asp:LinkButton id="editEntry" Runat="server" Text="Redigera" CommandName="Edit"/>
</ItemTemplate>
<EditItemTemplate>
<asp:Label id="EditID" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "location_ID")%>'/>
<asp:TextBox id="EditName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "location_name")%>'/>
<asp:TextBox id="EditLocation" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "location_url")%>'/>
<asp:LinkButton id="lbtUpdate" runat="server" Text="Ändra" CommandName="Update"/>
<asp:LinkButton id="lbtDelete" runat="server" Text="Ta Bort" CommandName="Delete"/>
<asp:LinkButton id="lbtCancel" runat="server" Text="Avbryt" CommandName="Cancel"/>
</EditItemTemplate>
</asp:datalist>
</form>
</body>
</html>