2009-06-09 5 views
2

J'ai un TabContainer dans un DataView lié à des données (pour présenter l'information par catégorie ex: Client Bio données, historique de santé, détails financiers ...). La mise à jour et l'insertion de formView ne fonctionnent pas (l'affichage des valeurs NULL dans la base de données) - Je suppose que FormView ne trouve pas les TextBoxes dans les onglets du conteneur d'onglets.AJAX Tabcontainer à l'intérieur de formview n'insérant pas de valeurs

Certains des forums disent que c'est à cause de la mise en œuvre de TabContainer (par la conception) de « INamingContainer », et un hack est de prendre le contrôle du code source de TabContainer (code source de boîte à outils ajax ctl) et retirer le « INamingContainer "interface de celui-ci ... Trop compliqué à mon goût .. Je suis un peu perdu.

Eh bien, y a-t-il un moyen simple et mieux de résoudre ce problème? Je suis ébloui de voir que la boîte à outils n'a pas réussi à implémenter cette fonctionnalité de base car pour la plupart des informations de commande de développement (contrôle de tabulation) avec formview est un besoin commun.

Merci à l'avance, Jeewai

Répondre

2

Répondre à mon fils ... Je suis un grand à l'intérieur du forum asp.net et a décidé de poster ici la solution: Reproduire l'explication qui m'a aidé:

Espérons que cela éclaircira quelques questions à d'autres utilisateurs qui pourraient rencontrer le même problème.

Best, JY

Blockquote Salut JY,

La réponse courte est que lorsqu'une instruction Bind est compilé, il y a des limites à l'extraction de valeurs pour une insertion/mise à jour. Si les contrôles dans FormView se trouvent alors dans un autre conteneur de nommage (TabContainer et TabPanel sont tous deux des conteneurs de nommage), le compilateur ne peut pas résoudre comment extraire la valeur du TextBox. J'ai une discussion plus détaillée de ceci sur mon blog au http://www.aarongoldenthal.com/post/2009/03/15/ASPNET-Databinding-Bind()-Method-Dissected.aspx.

Pour contourner ce problème, vous aurez besoin d'extraire les valeurs manuellement, quelque chose comme:

FormView1_ItemUpdating protected void (object sender, FormViewUpdateEventArgs e) { // Obtenez des références aux commandes TextBox LastNameTextBox = FormView1.FindControl ("TabContainer1"). FindControl ("TabPanel1"). FindControl ("LastNameTextBox") en tant que TextBox;

// Set update parameters in datasource 
ObjectDataSource1.UpdateParameters["LastName"].DefaultValue = LastNameTextBox.Text; 

}

Depuis FindControl ne recherche que le conteneur de nommage, vous aurez besoin de fouiller dans chaque conteneur nommant (FormView, TabContainer et TabPanel) pour se rendre à la zone de texte.

Espérons que ça aide.

Aaron

Blockquote

Questions connexes