fresh2000
07-03-2006, 02:27 PM
I really need some serious help here because this one is driving me nuts. See code below. I just don't get it.
I would assume, because I create my dynamic buttons in the on page load, it would recreate the listboxes after every postback, in this case after the click event of extrastoevoegen or extrasverwijderen ??? At this moment it only works when I click a button twice... or use reponse.redirect to the same page in the click event of extrastoevoegen or extrasverwijderen to make sure it realy reloads again. I don't want that because I need to maintain the scrollposition...
Imports System.Data
Imports System.Data.SqlClient
Partial Class test
Inherits System.Web.UI.Page
Public bID As String
Sub Page_Load(ByVal s As Object, ByVal e As EventArgs) Handles Me.Load
Session("boekingID") = 105
travelers()
End Sub
Sub travelers()
Dim ConnStr As String = System.Configuration.ConfigurationManager.AppSettings("MyProvider")
Dim Sql As String = "SELECT some fields"
Dim conn As New SqlConnection(ConnStr)
Dim objDR As SqlDataReader
Dim Cmd As New SqlCommand(Sql, conn)
conn.Open()
objDR = Cmd.ExecuteReader()
While objDR.Read()
Dim l As Integer
bID = objDR.Item("boekerID")
extras()
l = l + 1
End While
objDR.Close()
conn.Close()
End Sub
Sub extras()
'aanmaken extra's en de buttons
Dim conn As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("MyProvider"))
conn.Open()
'ongeboekte extras per reiziger
Dim get_boeker_ongeboekte_extras As New SqlCommand("get_boeker_ongeboekte_extras", conn)
get_boeker_ongeboekte_extras.CommandType = CommandType.StoredProcedure
get_boeker_ongeboekte_extras.Parameters.AddWithValue("@boekerID", bID)
get_boeker_ongeboekte_extras.Parameters.AddWithValue("@boekingID", Session("boekingID"))
Dim rdr_get_boeker_ongeboekte_extras As SqlDataReader = get_boeker_ongeboekte_extras.ExecuteReader()
Dim extras As New ListBox
extras.ID = "lbx_extras" & bID
extras.DataSource = rdr_get_boeker_ongeboekte_extras
extras.DataValueField = "extraID"
extras.DataTextField = "naam"
extras.DataBind()
rdr_get_boeker_ongeboekte_extras.Close()
'geboekte extras
Dim get_boeker_geboekte_extras As New SqlCommand("get_boeker_geboekte_extras", conn)
get_boeker_geboekte_extras.CommandType = CommandType.StoredProcedure
get_boeker_geboekte_extras.Parameters.AddWithValue("@boekingID", Session("boekingID"))
get_boeker_geboekte_extras.Parameters.AddWithValue("@boekerID", bID)
Dim rdr_get_boeker_geboekte_extras As SqlDataReader = get_boeker_geboekte_extras.ExecuteReader()
Dim gekozenextras As New ListBox
gekozenextras.ID = "lbx_gekozenextras" & bID
gekozenextras.DataSource = rdr_get_boeker_geboekte_extras
gekozenextras.DataValueField = "extraID"
gekozenextras.DataTextField = "naam"
gekozenextras.DataBind()
rdr_get_boeker_geboekte_extras.Close()
'knopje voor toevoegen
Dim extrastoevoegen As New Button
extrastoevoegen.CssClass = "btn"
extrastoevoegen.Text = "-->"
extrastoevoegen.CommandName = "myId"
extrastoevoegen.CommandArgument = bID
AddHandler extrastoevoegen.Command, AddressOf extrastoevoegen_Click
'knopje voor verwijderen
Dim extrasverwijderen As New Button
extrasverwijderen.CssClass = "btn"
extrasverwijderen.Text = "<--"
extrasverwijderen.CommandName = "myId"
extrasverwijderen.CommandArgument = bID
AddHandler extrasverwijderen.Command, AddressOf extrasverwijderen_Click
plh_reizigers.Controls.Add(extras)
plh_reizigers.Controls.Add(extrastoevoegen)
plh_reizigers.Controls.Add(extrasverwijderen)
plh_reizigers.Controls.Add(gekozenextras)
conn.Close()
End Sub
Sub extrastoevoegen_Click(ByVal Sender As Object, ByVal e As CommandEventArgs)
Dim extrastoevoegen As Button = CType(Sender, Button)
Dim myId As String = extrastoevoegen.CommandArgument
Dim lbx As ListBox = FindControl("lbx_extras" & myId)
Dim conn As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("MyProvider"))
conn.Open()
Dim set_boeker_extra As New SqlCommand("set_boeker_extra", conn)
set_boeker_extra.CommandType = CommandType.StoredProcedure
set_boeker_extra.Parameters.AddWithValue("@boekingID", Session("boekingID"))
set_boeker_extra.Parameters.AddWithValue("@extraID", lbx.SelectedValue)
set_boeker_extra.Parameters.AddWithValue("@boekerID", myId)
set_boeker_extra.ExecuteNonQuery()
conn.Close()
lbx.SelectedIndex = -1
'Response.Redirect("dynamic.aspx")
End Sub
Sub extrasverwijderen_Click(ByVal Sender As Object, ByVal e As CommandEventArgs)
Dim extrasverwijderen As Button = CType(Sender, Button)
Dim myId As String = extrasverwijderen.CommandArgument
Dim lbx As ListBox = FindControl("lbx_gekozenextras" & myId)
Dim conn As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("MyProvider"))
conn.Open()
Dim del_boeker_extra As New SqlCommand("del_boeker_extra", conn)
del_boeker_extra.CommandType = CommandType.StoredProcedure
del_boeker_extra.Parameters.AddWithValue("@boekingID", Session("boekingID"))
del_boeker_extra.Parameters.AddWithValue("@extraID", lbx.SelectedValue)
del_boeker_extra.Parameters.AddWithValue("@boekerID", myId)
del_boeker_extra.ExecuteNonQuery()
conn.Close()
lbx.SelectedIndex = -1
'Response.Redirect("dynamic.aspx")
End Sub
End Class
I would assume, because I create my dynamic buttons in the on page load, it would recreate the listboxes after every postback, in this case after the click event of extrastoevoegen or extrasverwijderen ??? At this moment it only works when I click a button twice... or use reponse.redirect to the same page in the click event of extrastoevoegen or extrasverwijderen to make sure it realy reloads again. I don't want that because I need to maintain the scrollposition...
Imports System.Data
Imports System.Data.SqlClient
Partial Class test
Inherits System.Web.UI.Page
Public bID As String
Sub Page_Load(ByVal s As Object, ByVal e As EventArgs) Handles Me.Load
Session("boekingID") = 105
travelers()
End Sub
Sub travelers()
Dim ConnStr As String = System.Configuration.ConfigurationManager.AppSettings("MyProvider")
Dim Sql As String = "SELECT some fields"
Dim conn As New SqlConnection(ConnStr)
Dim objDR As SqlDataReader
Dim Cmd As New SqlCommand(Sql, conn)
conn.Open()
objDR = Cmd.ExecuteReader()
While objDR.Read()
Dim l As Integer
bID = objDR.Item("boekerID")
extras()
l = l + 1
End While
objDR.Close()
conn.Close()
End Sub
Sub extras()
'aanmaken extra's en de buttons
Dim conn As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("MyProvider"))
conn.Open()
'ongeboekte extras per reiziger
Dim get_boeker_ongeboekte_extras As New SqlCommand("get_boeker_ongeboekte_extras", conn)
get_boeker_ongeboekte_extras.CommandType = CommandType.StoredProcedure
get_boeker_ongeboekte_extras.Parameters.AddWithValue("@boekerID", bID)
get_boeker_ongeboekte_extras.Parameters.AddWithValue("@boekingID", Session("boekingID"))
Dim rdr_get_boeker_ongeboekte_extras As SqlDataReader = get_boeker_ongeboekte_extras.ExecuteReader()
Dim extras As New ListBox
extras.ID = "lbx_extras" & bID
extras.DataSource = rdr_get_boeker_ongeboekte_extras
extras.DataValueField = "extraID"
extras.DataTextField = "naam"
extras.DataBind()
rdr_get_boeker_ongeboekte_extras.Close()
'geboekte extras
Dim get_boeker_geboekte_extras As New SqlCommand("get_boeker_geboekte_extras", conn)
get_boeker_geboekte_extras.CommandType = CommandType.StoredProcedure
get_boeker_geboekte_extras.Parameters.AddWithValue("@boekingID", Session("boekingID"))
get_boeker_geboekte_extras.Parameters.AddWithValue("@boekerID", bID)
Dim rdr_get_boeker_geboekte_extras As SqlDataReader = get_boeker_geboekte_extras.ExecuteReader()
Dim gekozenextras As New ListBox
gekozenextras.ID = "lbx_gekozenextras" & bID
gekozenextras.DataSource = rdr_get_boeker_geboekte_extras
gekozenextras.DataValueField = "extraID"
gekozenextras.DataTextField = "naam"
gekozenextras.DataBind()
rdr_get_boeker_geboekte_extras.Close()
'knopje voor toevoegen
Dim extrastoevoegen As New Button
extrastoevoegen.CssClass = "btn"
extrastoevoegen.Text = "-->"
extrastoevoegen.CommandName = "myId"
extrastoevoegen.CommandArgument = bID
AddHandler extrastoevoegen.Command, AddressOf extrastoevoegen_Click
'knopje voor verwijderen
Dim extrasverwijderen As New Button
extrasverwijderen.CssClass = "btn"
extrasverwijderen.Text = "<--"
extrasverwijderen.CommandName = "myId"
extrasverwijderen.CommandArgument = bID
AddHandler extrasverwijderen.Command, AddressOf extrasverwijderen_Click
plh_reizigers.Controls.Add(extras)
plh_reizigers.Controls.Add(extrastoevoegen)
plh_reizigers.Controls.Add(extrasverwijderen)
plh_reizigers.Controls.Add(gekozenextras)
conn.Close()
End Sub
Sub extrastoevoegen_Click(ByVal Sender As Object, ByVal e As CommandEventArgs)
Dim extrastoevoegen As Button = CType(Sender, Button)
Dim myId As String = extrastoevoegen.CommandArgument
Dim lbx As ListBox = FindControl("lbx_extras" & myId)
Dim conn As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("MyProvider"))
conn.Open()
Dim set_boeker_extra As New SqlCommand("set_boeker_extra", conn)
set_boeker_extra.CommandType = CommandType.StoredProcedure
set_boeker_extra.Parameters.AddWithValue("@boekingID", Session("boekingID"))
set_boeker_extra.Parameters.AddWithValue("@extraID", lbx.SelectedValue)
set_boeker_extra.Parameters.AddWithValue("@boekerID", myId)
set_boeker_extra.ExecuteNonQuery()
conn.Close()
lbx.SelectedIndex = -1
'Response.Redirect("dynamic.aspx")
End Sub
Sub extrasverwijderen_Click(ByVal Sender As Object, ByVal e As CommandEventArgs)
Dim extrasverwijderen As Button = CType(Sender, Button)
Dim myId As String = extrasverwijderen.CommandArgument
Dim lbx As ListBox = FindControl("lbx_gekozenextras" & myId)
Dim conn As New SqlConnection(System.Configuration.ConfigurationManager.AppSettings("MyProvider"))
conn.Open()
Dim del_boeker_extra As New SqlCommand("del_boeker_extra", conn)
del_boeker_extra.CommandType = CommandType.StoredProcedure
del_boeker_extra.Parameters.AddWithValue("@boekingID", Session("boekingID"))
del_boeker_extra.Parameters.AddWithValue("@extraID", lbx.SelectedValue)
del_boeker_extra.Parameters.AddWithValue("@boekerID", myId)
del_boeker_extra.ExecuteNonQuery()
conn.Close()
lbx.SelectedIndex = -1
'Response.Redirect("dynamic.aspx")
End Sub
End Class