
October 4th, 2005, 10:22 PM
|
|
Registered User
|
|
Join Date: Oct 2005
Location: Brisbane/Austrlaia
Posts: 2
Time spent in forums: 19 m 47 sec
Reputation Power: 0
|
|
|
Postback & Click Event Issues - Help Please
Hi Everyone,
I'm new to .net and i'm having a problem with a postback event..
What I have is a group of drop down boxes, two of which are populated with dates during pageload, one is a hard coded country list, the last is a list of city's in a particular country, which is populated from the country selected value of the coutry list. The country list has AutoPostBack set as true.
My problem is that once i complete a postback, ie Change country to get a different city list, The click event for my button doesnt work..
I was wondering if someone could read over the code below and see if they can pick any logic issues?
Help is much appreciated...
---------------------------------------------------------------------------
Code:
Original
- Code |
|
|
|
Imports System.Data.SqlClient
Public Class LocPage
Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
Protected WithEvents rptResults As System.Web.UI.WebControls.Repeater
Protected WithEvents litCityID As System.Web.UI.WebControls.Literal
Protected WithEvents litTime As System.Web.UI.WebControls.Literal
Protected WithEvents litMsg As System.Web.UI.WebControls.Literal
Protected WithEvents ddlLMIn As System.Web.UI.WebControls.DropDownList
Protected WithEvents ddlLMOut As System.Web.UI.WebControls.DropDownList
Protected WithEvents ddlLMCtry As System.Web.UI.WebControls.DropDownList
Protected WithEvents ddlLMCity As System.Web.UI.WebControls.DropDownList
Protected WithEvents btnSearch As System.Web.UI.WebControls.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
#Region " SQL Connection String "
Public ReadOnly Property getConnString() As String
Get
'Live
Return "Server="
End Get
End Property
#End Region
#Region " MakeHtml "
Public Function MakeHtml(ByVal Input As String) As String
'Parse for <#> and replace with <br />
Input = Replace(Input, "<#>", "<br>")
Return Input
End Function
#End Region
#Region " MakeList "
Public Function MakeList(ByVal Input As String) As String
'Parse for <#> and replace with </li><li>
Input = Replace(Input, "<#>", "</li><li>")
Return Input
End Function
#End Region
#Region " Convert DataReader to Data Set "
Public Shared Function convertDataReaderToDataSet(ByVal reader As SqlDataReader) As DataSet
Dim ds As DataSet = New DataSet
Dim schema As DataTable
Dim data As DataTable
Dim i As Integer
Dim dr As DataRow
Dim dc As DataColumn
Dim columnName As String
Do
schema = reader.GetSchemaTable()
data = New DataTable
If Not schema Is Nothing Then
For i = 0 To schema.Rows.Count - 1
dr = schema.Rows(i)
columnName = dr("ColumnName")
If data.Columns.Contains(columnName) Then
columnName = columnName + "_" + i.ToString()
End If
dc = New DataColumn(columnName, CType(dr("DataType"), Type))
data.Columns.Add(dc)
Next
ds.Tables.Add(data)
While reader.Read()
dr = data.NewRow()
For i = 0 To reader.FieldCount - 1
dr(i) = reader.GetValue(i)
Next
data.Rows.Add(dr)
End While
Else
dc = New DataColumn("RowsAffected")
data.Columns.Add(dc)
ds.Tables.Add(data)
dr = data.NewRow()
dr(0) = reader.RecordsAffected
data.Rows.Add(dr)
End If
Loop While reader.NextResult()
reader.Close()
Return ds
End Function
#End Region
#Region " Populate Cities Drop Down "
Sub PopulateCities(ByVal CountryId As Integer)
'Get SQL Data
Dim SQL As String = "tblCity_Cities_by_CountryID"
Dim params() As SqlParameter = New SqlParameter(0) {}
params(0) = New SqlParameter("@CountryID", CountryId)
Dim dsLMCity As SqlClient.SqlDataReader = SqlHelper.ExecuteReader(getConnString, CommandType.StoredProcedure, SQL, params)
'Clear Previous City List
ddlLMCity.Items.Clear()
'Write New City List
While dsLMCity.Read
ddlLMCity.Items.Add(dsLMCity.Item("City"))
End While
dsLMCity.Close()
End Sub
#End Region
#Region " Page Load "
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Declare Dataset for Cache
Dim ds As DataSet
ds = Cache("data")
If Not IsPostBack Then
' Set Dates in Drop Downs
For i As Integer = 1 To 20
ddlLMIn.Items.Add(Today.AddDays(i).ToString("D"))
ddlLMOut.Items.Add(Today.AddDays(i).ToString("D"))
Next
ddlLMCtry.Items.FindByValue(3)
PopulateCities(ddlLMCtry.SelectedValue)
ddlLMIn.Items.FindByValue(Today.AddDays(1).ToStrin g("D")).Selected = True
ddlLMOut.Items.FindByValue(Today.AddDays(3).ToStri ng("D")).Selected = True
Dim CityId As Integer
CityId = litCityID.Text
'SQL Call
Dim SQL As String = "Hotels_by_CityID"
Dim params() As SqlParameter = New SqlParameter(0) {}
params(0) = New SqlParameter("@CityID", CityId)
Dim dsCity As SqlClient.SqlDataReader = SqlHelper.ExecuteReader(getConnString, CommandType.StoredProcedure, SQL, params)
'Conver Datareader into a Dataset for Cacheing
ds = convertDataReaderToDataSet(dsCity)
Cache("Data") = ds
dsCity.Close()
rptResults.DataSource = ds
rptResults.DataBind()
'set message to say where datacame from
litMsg.Text = "DB"
Else
'Bind Cache to repeater
rptResults.DataSource = Cache("Data")
rptResults.DataBind()
litMsg.Text = "C"
End If
'Time of cache
litTime.Text = Now
End Sub
#End Region
#Region " Btn Search Click "
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
Dim inDate As DateTime
Dim outDate As DateTime
inDate = ddlLMIn.SelectedValue
outDate = ddlLMOut.SelectedValue
'For testing..
'Response.Write(inDate)
'Response.Write(outDate)
Response.Redirect("http://www.website.com/default.aspx?city=" & ddlLMCity.SelectedValue & "&indate=" & inDate.ToString("yyyy-M-d") & "&outdate=" & outDate.ToString("yyyy-M-d"))
End Sub
#End Region
#Region " Drop Down List Change "
Private Sub ddlLMCtry_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlLMCtry.SelectedIndexChanged
PopulateCities(ddlLMCtry.SelectedValue)
End Sub
#End Region
End Class
|