HardCode
Well-known member
- Joined
- Apr 2, 2004
- Messages
- 49
Ive created a user control (.ascx). This user control contains an HTML table with one table row, three table details. The first TD contains an ASP Label control. The second contains a RadioButtonList with two options ("New", "Existing"). The third contains a DropDownList. In the .ascx control, the Labels text is set using a Public Property of type String, and the DropDownLists data source is set by a Public Property of type SqlClient.SqlDataReader. The reader will return about 6100 customers. The radio buttons are static.
I am using this control on an .aspx page with a GridView and an empty Panel control. When I click on "select" in the GridView, I create my user control and add it to the Panel control. So far, I only add one user control. I will need to add more after I figure out the answer to my problem.
The first time I click "select" in the GridView, the user control takes about two seconds to show up on the page. Thats fine. However, if I click another item in the GridView, the browser locks up for about a minute. Stepping through the code, I can reach the "End Sub" of the event "myGridView_SelectedIndexChanged(). However, stepping past this End Sub locks up the browser. There is no other VB code running after that End Sub or after the lock up.
I really have no idea what is going on here. I should note that I am using AJAX, so all of the above-mentioned controls are in an AJAX UpdatePanel. One other note, IE locks up for about a minute, but Firefox locks up for about 5 seconds (which is still longer than clicking the GridView the first time). Another caveat ... this control is going to be used to determine if a customer in the GridView (coming from an ERP system) is already in "our" SQL Server database, so all of "our" customers have to be in one DropDownList. The SqlDataReader assigned to the DropDownList comes from "our" database.
I dont want to post a whole slew of code, so Ill just start with the GridView event and the user control creation:
I am using this control on an .aspx page with a GridView and an empty Panel control. When I click on "select" in the GridView, I create my user control and add it to the Panel control. So far, I only add one user control. I will need to add more after I figure out the answer to my problem.
The first time I click "select" in the GridView, the user control takes about two seconds to show up on the page. Thats fine. However, if I click another item in the GridView, the browser locks up for about a minute. Stepping through the code, I can reach the "End Sub" of the event "myGridView_SelectedIndexChanged(). However, stepping past this End Sub locks up the browser. There is no other VB code running after that End Sub or after the lock up.
I really have no idea what is going on here. I should note that I am using AJAX, so all of the above-mentioned controls are in an AJAX UpdatePanel. One other note, IE locks up for about a minute, but Firefox locks up for about 5 seconds (which is still longer than clicking the GridView the first time). Another caveat ... this control is going to be used to determine if a customer in the GridView (coming from an ERP system) is already in "our" SQL Server database, so all of "our" customers have to be in one DropDownList. The SqlDataReader assigned to the DropDownList comes from "our" database.
I dont want to post a whole slew of code, so Ill just start with the GridView event and the user control creation:
Code:
Private Sub gvNewCustomers_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles gvNewCustomers.SelectedIndexChanged
Try
Dim sCustID As String
Dim sCustName As String
sCustID = Me.gvNewCustomers.SelectedRow.Cells(2).Text
sCustName = Me.gvNewCustomers.SelectedRow.Cells(3).Text
Call AddDynamicControls(sCustID, sCustName)
Catch ex As Exception
Throw
End Try
End Sub ***** Freezes here (the last line of code before the page renders)
Private Sub AddDynamicControls(ByVal custId As String, ByVal custName As String)
Try
Clear out the Placeholder of any existing controls.
Me.pnlDynamicControls.Controls.Clear()
Add the customer control
Call AddCustomerDynamicControls(custId, custName)
Add an HTML Horizontal row
Me.pnlDynamicControls.Controls.Add(New HtmlGenericControl("hr"))
TODO: Add the address controls
Catch ex As Exception
Throw
End Sub
Private Sub AddCustomerDynamicControls(ByVal custId As String, ByVal custName As String)
Try
Dim oEntity As Control = LoadControl("EntitySelector.ascx")
CType(oEntity, EntitySelector).ID = "entity_Cust_" & custId
CType(oEntity, EntitySelector).LabelText = custName
CType(oEntity, EntitySelector).DropDownDataSource = CreateCustomerDataReader()
Me.pnlDynamicControls.Controls.Add(oEntity)
Catch ex As Exception
Throw
End Try
End Sub