IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Accéder au contrôle caché d'un detailview : bizzarerie sur RadioButtonList


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    Par défaut Accéder au contrôle caché d'un detailview : bizzarerie sur RadioButtonList
    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

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    C'est quoi "propriététexte" dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String strtemp =    ((RadioButtonList)this.dvIntervention.FindControl("rdblNature")).propriététexte ;
    Chez moi, ceci marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox1.Text = "123";
        TextBox1.Visible = false;
    }
     
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label lbl = new Label();
        TextBox txt = (TextBox)this.form1.FindControl("TextBox1");
        lbl.Text = txt.Text;
        PlaceHolder1.Controls.Add(lbl);
    }
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    Par défaut
    C'est un exemple. quelquesoit la propriété je n'arrive pas à y accéder.
    (que ça soit du texte ou que cela renvoie autre chose : un visible par exemple me renvoie true dans l'itemupdating)

    Pour info le contôle est dans le detailview et je cache l'ensemble de l'item (y compris le header donc). pas uniquement le contrôle textbox/rdbl ou autre


    j'ai essayé de placer une textbox... et cela fonctionne.


    Il semblerait que cela provienne de l'utilisation du RadioButtonList... y'a un truc qui cloche au niveau de la valeur sélectionnée.



    -------------------------------------------------------------------------
    Truc étrange comme pseudo solution ?
    -------------------------------------------------------------------------
    P.S. : C''est moi ou y'a un truc pourri au royaume du Danemark ?

    Je reteste et je m'aperçois d'un étrange phénomène:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((RadioButtonList)this.dv.FindControl("rdblTruc")).SelectedValue;
    = "" sur un contrôle RDBL standard .
    = valeur bindée si je rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnSelectedIndexChanged="rdblTruc_SelectedIndexChanged"
    (sans rien dedans evidemment)

    Je tente l'experience sur une autre RDBL et la même chose se produit :
    pas de SelectedIndexChanged = pas de chocolat

    quelqu'un aurait une explication ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/03/2007, 10h07
  2. Réponses: 7
    Dernier message: 26/02/2007, 12h07
  3. Accéder à un contrôle avec son numéro
    Par nattyman dans le forum Access
    Réponses: 2
    Dernier message: 23/09/2006, 06h47
  4. accéder à un contrôle de formulaire avec un nom de tableau
    Par jibouze dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/06/2005, 23h57
  5. Réponses: 2
    Dernier message: 10/05/2005, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo