いくつかのものをロードするリピーターがあります。リピーターのすべてのコンテンツを削除する SQL コマンドを含むボタンもありますが、残念ながら、ユーザーが「削除」ボタンを押した後にページをリロードすると、アイテムはまだそこにあります。
ページロードサブに対して次のようなことを試しました:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
bookShelfContainer.DataSource = Nothing
Exit Sub
End If
displayUserBooks()
End Sub
そして、ここにリピーターのサブがあります:
Sub displayUserBooks()
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
Dim cmd As OleDbCommand = New OleDbCommand()
cmd.Connection = conn
conn.Open()
Session("currentuser") = User.Identity.Name
cmd.Parameters.AddWithValue("@currentUser", Session("currentuser"))
cmd.CommandText = String.Format("SELECT TOP 6 booklist.ID, booklist.Title, booklist.Author, booklist.imgurl, bookshelfjunction.BookID FROM booklist INNER JOIN bookshelfjunction ON bookshelfjunction.BookID = booklist.ID WHERE bookshelfjunction.UserName = @currentUser")
bookShelfContainer.DataSource = cmd.ExecuteReader()
bookShelfContainer.DataBind()
conn.Close()
End Sub
必要な場合に備えて、削除機能:
Protected Sub btnClearBookshelf()
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
Dim cmd As OleDbCommand = New OleDbCommand()
cmd.Connection = conn
conn.Open()
Session("currentuser") = User.Identity.Name
cmd.Parameters.AddWithValue("@currentUser", Session("currentuser"))
cmd.CommandText = String.Format("DELETE FROM bookshelfjunction WHERE bookshelfjunction.UserName = @currentUser")
cmd.ExecuteNonQuery()
conn.Close()
End Sub
リピーターが確実にデータバインドされるようにするには、Page_Load If IsPostBack 評価に何を書き込む必要がありますか?