2015-04-29 4 views
0

J'ai lu des articles et des articles et juste devenir un peu confus et par conséquent brûler à travers le temps je n'ai pas pour le momentASP VB Bloqué sur les contrôles dynamiques, Viewstate et Postback. Pourrait vraiment utiliser un peu d'aide pour se remettre sur la bonne voie

Quelqu'un peut-il regarder mon code et Dites-moi où je me suis trompé?

Partial Class PayerContacts 
    Inherits System.Web.UI.Page 

    Dim connStrDRContacts As String = ConfigurationManager.ConnectionStrings("DRContacts_SQL").ConnectionString 

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
     navBuild() 
    End Sub 

    Protected Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init 

     If IsPostBack Then 
      LoadContacts(ViewState("objSender")) 
     End If 

    End Sub 

    Private Function navBuild() As Integer 

     Dim SQLstrDRs As String = "SELECT * FROM DRList" 
     Dim DbConnDRs As SqlConnection = New SqlConnection(connStrDRContacts) 
     DbConnDRs.Open() 
     Dim dtDRsTemp As New DataTable 
     Dim SQLAdapterDRs As New SqlDataAdapter(SQLstrDRs, DbConnDRs) 
     SQLAdapterDRs.Fill(dtDRsTemp) 

     'Loop through each row of the DataView to create HTML table data 

     Dim NewTableRow As New TableRow 

     For Each row As DataRow In dtDRsTemp.Rows 

    'CREATE table with button to display contacts related to client (one to many) 
      Dim NewTableButton As LinkButton = New LinkButton 
      NewTableButton.ID = "btnDRName" & NewTableText 
      NewTableButton.ViewStateMode = UI.ViewStateMode.Enabled 
      AddHandler NewTableButton.Click, AddressOf LoadContacts 

     Next 

     Return 0 

    End Function 

    Protected Sub LoadContacts(sender As Object, e As EventArgs) 

     Dim LoopCount As Integer = 0 

     Dim SQLstrLoadTable As String = "SELECT * FROM ContactList WHERE DRVendor = '" & sender.Text.ToString & "'" 
    and so on.... 
     SQLAdapterLoadTable.Fill(dtLoadTableTemp) 

     Dim NewTableRow As New TableRow 

     For Each row As DataRow In dtLoadTableTemp.Rows 

      'CREATE Accordion to display data 
      NewAccordion.ID = "ContactAccordion" & LoopCount 
      NewAccordion.Visible = True 
    blah, blah... 

      'SET Pane 
      NewAccordionPane.HeaderContainer.ID = "PaneHeader" & LoopCount 
      NewAccordionPane.ContentContainer.ID = "PaneContent" & LoopCount 

    'CREATE button to open ModalPopup to EDIT each record 
      Dim imgGear As New ImageButton 
      imgGear.ID = "btnGear" & row!ID.ToString 
      imgGear.ViewStateMode = UI.ViewStateMode.Enabled 
      AddHandler imgGear.Click, AddressOf EditRecord 

      'LOAD Pane 
      NewAccordionPane.HeaderContainer.Controls.Add(NewHeaderTable) 
      NewAccordionPane.ContentContainer.Controls.Add(New LiteralControl(NewTableText)) 


     ViewState("objSender") = sender 

    End Sub 

    Protected Sub EditRecord(ByVal sender As Object, ByVal e As EventArgs) 
     'Open ModalPopup to edit record 
     popup.Show() 
     pnlAddEdit.Visible = True 

    End Sub 

End Class 
+0

Qu'essayez-vous de faire? Qu'est-ce qui est cassé? Avez-vous essayé le débogage? Veuillez également réduire le code au minimum nécessaire pour reproduire le problème. (Parfois, ce processus est suffisant pour comprendre le problème tout seul!) – Barett

+0

OK, je l'ai réduit. Ce que j'essaie de faire, c'est d'ouvrir une page avec une barre NAV et de lister tous les clients, de cliquer sur le nom de ce client et d'afficher des «cartes de contact» pliables pour chaque contact. Puis il y a une icône d'engrenage dans l'en-tête de chaque carte de contact (accordéon) que vous cliquez pour modifier ce contact individuel (une fenêtre modale à éditer) – mreinsmith

+0

La barre de navigation de la liste des clients fonctionne et affiche les contacts liés au client. Mais je ne peux pas obtenir l'icône d'engrenage pour ouvrir la fenêtre contextuelle Modal. Passant le gestionnaire de la publication ne semble pas fonctionner – mreinsmith

Répondre

0

Les articles en boucle Infinis sur ViewState et contrôles dynamiques doivent vraiment être lus par tous les développeurs Webforms: -

http://mocha.mojoskins.com/SharedFiles/Download.aspx?pageid=566&mid=786&fileid=38

http://weblogs.asp.net/infinitiesloop/TRULY-Understanding-Dynamic-Controls-_2800_Part-1_2900_

Les exemples sont en C#, mais vous devriez être en mesure pour comprendre ce qui se passe, c'est la même bibliothèque de classes de base après tout.

+1

Merci, je vais vérifier – mreinsmith

+0

Le Viewstate est ici - http://weblogs.asp.net/infinitiesloop/Truly-Understanding-Viewstate - mais il semble qu'il manque des images. Toujours lisible cependant, et une très bonne (et précise) explication de la façon dont ViewState fonctionne et comment vous devriez l'utiliser. – sh1rts