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)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
e.NewValues["monChamp"] =  ((RadioButtonList)this.dv.FindControl("rdblmonChamp")).SelectedValue;
La valeur trouvée est "" (en base elle est correcte (un identifiant Int), et après le prerender également).

accessoirement si je veux essayer d'attribuer une propriété quelquonque à une variable genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
 String strtemp =    ((RadioButtonList)this.dvIntervention.FindControl("rdblNature")).propriététexte ;
l'espion me dit que strtemp n'existe pas dans le contexte. ...


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