Bonjour ,
J'ai un formulaire contenant un Detailview
Dans ce detailview des champs ne sont accessibles en lecture ou modification que par des personnes avec certains droits.
je les cache au prerender du detailview :
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.dv.Fields[1].Visible = currentUser.isAdmin
voilà un exemple de code utilisé sur un des champs
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 <asp:TemplateField HeaderText="monChamp" SortExpression="monChamp" > <EditItemTemplate> <asp:RadioButtonList ID="rdblmonChamp" runat="server" DataSourceID="odsmonChamp" DataTextField="Nom" DataValueField="ID" SelectedValue= '<%# Bind("monChamp")%>'> </asp:RadioButtonList> </EditItemTemplate> <InsertItemTemplate> <asp:RadioButtonList ID="rdblmonChamp" runat="server" DataSourceID="odsmonChamp" DataTextField="NomLong" DataValueField="ID" OnPreRender="rdblPriorite_PreRender"></asp:RadioButtonList> </InsertItemTemplate> <ItemTemplate> <asp:Label ID="lblmonChamp" runat="server" Text='<%# Eval("monChamp") %>' ></asp:Label> </ItemTemplate> </asp:TemplateField>
le prerender sur l'insert me sert à initialiser la valeur sélectionnée à une valeur par défaut.
sur l'itemInserting je fixe une valeur par défaut (si crée par non admin ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (utilisateur pas admin ) { e.Values["monChamp"] = valeur par défaut }else...
Le problème : champs caché + modication = plantage.
(erreur de conversion de données, enregistrement d'un 0 en base)
La valeur trouvée est "" (en base elle est correcte (un identifiant Int), et après le prerender également).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 e.NewValues["monChamp"] = ((RadioButtonList)this.dv.FindControl("rdblmonChamp")).SelectedValue;
accessoirement si je veux essayer d'attribuer une propriété quelquonque à une variable genre :
l'espion me dit que strtemp n'existe pas dans le contexte. ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String strtemp = ((RadioButtonList)this.dvIntervention.FindControl("rdblNature")).propriététexte ;
Pour résumer
Lorsque je crée/modifie avec les droits admin tout va bien.
Lorsque je crée avec des droits utilisateur standard tout va bien
Lorsque je crée/modifie avec des droits utilisateur standard et que les champs ne sont pas cachés tout va bien
lorsque je veux modifier un enregistrement avec champs caché ==> ça ne marche plus
Je suppose que ce n'est pas grand chose mais du haut de mes 4-5 mois d'expérience en asp.net j'avoue que je suis un peu perdu, si quelqu'un à une piste sur ce genre de problème.
Merci
Partager