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 :
this.dv.Fields[1].Visible = currentUser.isAdmin
voilà un exemple de code utilisé sur un des champs
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 ) :
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)
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 :
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
Partager