Bonjour à tous !
Je me retrouve confronté à un problème concernant la bascule entre deux View d'un MultiView imbriqué dans un FormView... !
Pour résumer mon problème :
Dans l'optique d'un projet e-commerce, je suis en train de monter une interface pour la création d'un produit, dont toutes les informations seront stockées dans une table "T_Prod" de ma base de données.
Pour réaliser cela, j'ai déposer un FormView dans mon WebForm. Je l'ai ensuite lié à un contrôle SqlDataSource pointant vers ma fameuse table "T_Prod".
Seulement je voudrai que certains champs présent dans ce "FormView" soient, à la base, cachés. Ils n'apparaîtraient que si une CheckbBox bien précise est cochée.
Plus concrètement, un produit est susceptible de comporter une notice : si on clique sur la CheckBox "Notice", alors le TextBox "TB_PrixNot" (dans lequel on renseigne le prix de cette notice) apparaît, ainsi que d'autres informations propres à la notice...
Pour ce faire, j'ai placé un MultiView au sein de mon FormView :
Code ASPX :
Code-behind (VB.NET) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <asp:FormView ID="FV_NouveauProd" runat="server" DataKeyNames="Id_Prod" DataSourceID="DS_Prod" DefaultMode="Insert" RenderOuterTable="False"> <InsertItemTemplate> <div id="etape1" class="item"> <h2>Informations générales</h2> <table> <tr> <td><label for="CB_Not">Notice</label></td> <td colspan="2"><asp:CheckBox ID="CB_Not" runat="server" AutoPostBack="True" oncheckedchanged="CB_Not_CheckedChanged" ClientIDMode="Static" /></td> <td></td> </tr> <asp:MultiView ID="MV_Not" runat="server"> <asp:View ID="V_Not1" runat="server"></asp:View> <!-- On affiche rien à la base --> <asp:View ID="V_Not2" runat="server"> <!-- Si on clique sur la CheckBox, on affiche ça --> <tr class="fantome"> <td></td> <td><label for="TB_RefNot">Référence *</label></td> <td><asp:TextBox ID="TB_RefNot" runat="server" Text='<%#Bind("RefNot_Prod")%>' MaxLength="8" ClientIDMode="Static" /></td> <td> <asp:RequiredFieldValidator ID="RFB_RefNot" runat="server" [...]>* Champ obligatoire.</asp:RequiredFieldValidator> <asp:RegularExpressionValidator ID="REV_RefNot" runat="server" [...]>Format non valide.</asp:RegularExpressionValidator> </td> </tr> </asp:View> </asp:MultiView> </table> </div> </InsertItemTemplate> </asp:FormView>
Mais impossible de basculer à l'autre vue de cette façon. En effet j'obtiens l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Imports System.IO Partial Class Cms_Default Inherits System.Web.UI.Page Dim MV_Not As MultiView Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then 'Récupération du MultiView "MV_Not" MV_Not = TryCast(FV_NouveauProd.FindControl("MV_Not"), MultiView) 'Définition de la vue par défaut MV_Not.ActiveViewIndex = 0 End If End Sub Protected Sub CB_Not_CheckedChanged(sender As Object, e As System.EventArgs) 'Afficher l'autre vue du MultiView MV_Not.ActiveViewIndex = 1 End Sub End Class
Des idées pour résoudre ce problème ?La référence d'objet n'est pas définie à une instance d'un objet.
Merci d'avance![]()
Partager