Basculer de "View" dans mon "MultiView"
Bonjour à tous ! :)
Je me retrouve confronté à un problème concernant la bascule entre deux View d'un MultiView imbriqué dans un FormView... ! 8-)
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:
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> |
Code-behind (VB.NET) :
Code:
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 |
Mais impossible de basculer à l'autre vue de cette façon. En effet j'obtiens l'erreur suivante :
Citation:
La référence d'objet n'est pas définie à une instance d'un objet.
Des idées pour résoudre ce problème ?
Merci d'avance :D