none
formulaire customisé

    Pregunta

  • Bonjour à tous
    je reviens sur un pb que j'avais déjà évoqué dans un post précédent :
    je sais maintenant comment developper une webpart à partir du composant Smartpart
    Jai donc créé un user control qui me permet de formater un ensemble de données de manière personnalisées
    (sous forme de tableau avec des zones regroupées et non pas rectiligne comme c'est fait par defaut)
    Le pb c'est que je ne sais pas quel objet uiliser pour cela.
    J'ai essayé le spgridview, le detailview mais je ne trouve pas la syntaxe qui peut me permettre de recuperer un champ isolé.
    Concrètement, je recupere une liste sur une webpart (via Linq) , je clique sur un bouton détail et là c'est mon usercontrol qui est appelé (je passe l'id de ma ligne selectionnée par session)
    Et c'est que je voudrais recuperer les champs de façon isolée : par exemple, le nom le prenom sur une première ligne, puis faire un "pavé " adresse , un autre sur le materiel utilisé etc ....
    je pensais faire un truc du genre
    DataClasses1DataContext ledatc = new DataClasses1DataContext(_sqlConnectionString);
    DetailsView ledetail = new DetailsView();
    ledetail.AutoGenerateColumns = false;
    
    puis
    lenom = spdetail.fields[2].tosting()
    
    
    mais ça ne fonctionne pas .
    Avez vous un avis sur la question svp ??
    Merci et bonne journée
    martes, 09 de febrero de 2010 7:48

Respuestas

  • Cela va dépendre de votre modèle Linq mais ça devrait ressembler à ça :

    var personne = ledatc.Personnes.Where(p => p.Id = identifiantINT);
    lblNom.Text = personne.Nom;
    lblPrenom.Text = personne.Prenom;
    Il faudrait vérifier qu'on peut coupler un DetailsView avec du Linq, d'où cet exemple avec des labels pour éviter le problème.

    Bon week-end,
    Arnault

    http://blogs.developpeur.org/anouvel
    Merci de valider les réponses qui correspondent à votre problème afin qu'il apparaisse comme résolu.
    • Propuesto como respuesta Arnault NouvelModerator sábado, 13 de febrero de 2010 9:04
    • Marcado como respuesta algeox martes, 16 de febrero de 2010 9:47
    viernes, 12 de febrero de 2010 13:56
    Moderador

Todas las respuestas

  • Bonjour Alain,

    Je ne suis pas certain d'avoir bien compris la question, n'hésitez pas à reformuler si je m'éloigne de la problématique.

    coté ascx, définissez le HTML de votre choix pour regrouper vos valeurs, avec 1 controle serveur par valeur. Ici, une div avec le prénom et le nom:

    <div>
        Nom : <asp:Label id="lblNom" runat="server" /><br />
        Prénom : <asp:Label id="lblPrenom" runat="server" />
    </div>
    côté serveur, dans l'ascx.cs, on récupère l'objet correspondant à une personne (sauce Linq qui dépend de votre base)

    protected void Page_Load(object sender, EventArgs e)
    {
       var personne;   //Récupérez l'instance de l'objet personne via Linq
        lblNom.Text = personne.Nom;   
        lblPrenom.Text = personne.Prenom;
    }


    Ensuite on peut définir d'autres blocs sur le même principe pour l'adresse et les autres informations.

    Est-ce que cela répond à votre question ?
    http://blogs.developpeur.org/anouvel
    Merci de valider les réponses qui correspondent à votre problème afin qu'il apparaisse comme résolu.
    viernes, 12 de febrero de 2010 12:31
    Moderador

  •  
    bonjour Arnault
    merci de vous pencher sur mon pb.non , vous ne vous éloignez pas de la question c'est bien ce que je veux .cependant , je ne vois tjrs pas comment obtenir (pour suivre exemple presonne.nom et personne.prenom) ??J'ai bien constitué coté ascx, mon formulaire htmlet coté.cs , je recupere mes données comme ceci :


    //Lecture de l'objet session
    identifiant = HttpContext.Current.Session["SeSS_idSelect"].ToString();
    identifiantINT = int.Parse(identifiant);
    
    // definition du datactxt
    DataClasses1DataContext ledatc = new DataClasses1DataContext();
    
    à partir de la , je dosi recuperer les champscorrespondant à l'id selectionné via une procédure stockée.
    Je dois donc bien utilisé un detailview ou spgridview ou autre non ???? 
    // voila le code que je fais ensuite :
    
    // objet detail view
    DetailsView ledetail = new DetailsView();
    ledetail.DataSource = ledatc.proc_detailGeneral(identifiantINT);
    
    partant de là, comment recuperer les differents champs (nom prenom etc ???)
    
    merci beaucoup 
    Alain

    viernes, 12 de febrero de 2010 13:37
  • Cela va dépendre de votre modèle Linq mais ça devrait ressembler à ça :

    var personne = ledatc.Personnes.Where(p => p.Id = identifiantINT);
    lblNom.Text = personne.Nom;
    lblPrenom.Text = personne.Prenom;
    Il faudrait vérifier qu'on peut coupler un DetailsView avec du Linq, d'où cet exemple avec des labels pour éviter le problème.

    Bon week-end,
    Arnault

    http://blogs.developpeur.org/anouvel
    Merci de valider les réponses qui correspondent à votre problème afin qu'il apparaisse comme résolu.
    • Propuesto como respuesta Arnault NouvelModerator sábado, 13 de febrero de 2010 9:04
    • Marcado como respuesta algeox martes, 16 de febrero de 2010 9:47
    viernes, 12 de febrero de 2010 13:56
    Moderador
  • ok je vais verifier cela
    Merci beaucoup Arnault
    bon week end également

    Alain
    viernes, 12 de febrero de 2010 14:24
  • c'est ok Arnault.
    Je ne savais pas qu'on pouvait proceder comme cela avec Linq et enbuchant un peu sur la syntaxe j'ai réussi.
    Je me suis effectivement passé du DetailView
    Resta maintenant à combienr cela dans un userCtrl avec l'aide de SmartPart
    Merci encore pour votre aide très précieuse.

    a ............... bientôt sans doute ;-)
    Bonne journée

    Alain

    martes, 16 de febrero de 2010 9:50