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 MVC Discussion :

Ajouter un lien dans un webgrid (MVC3, VB) [Débutant(e)]


Sujet :

ASP.NET MVC

  1. #1
    Membre régulier
    Homme Profil pro
    .Net developer
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net developer

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 91
    Points
    91
    Par défaut Ajouter un lien dans un webgrid (MVC3, VB)
    Bonjour à tous,

    J'ai besoin de récupérer un tableau, de l'afficher, et de proposer un lien à chaque ligne pour l'éditer.

    Voici le code du contrôleur (il me semble correct)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                Dim listMeet = New List(Of meeting)
                listMeet = (From d In db.meeting
                           Where d.FK_meet_contact = id
                           Select d).ToList()
                ViewBag.ListeMeeting = listMeet
    Dans la vue, j'ai ceci en script de début de page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Code
        ViewData("Title") = "Details"
     
        Dim grid = New WebGrid(ViewBag.listeMeeting, selectionFieldName:="SelectedRow")
        Dim item As ListItem
    End Code
    Honnêtement, je ne sais pas à quoi peut me servir le "selectionFieldName", ni pourquoi j'ai mis l'objet Item en type "ListItem".
    Et voici le webgrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <fieldset>
        <legend>Meetings</legend>
            @Html.ActionLink("Nouveau Meeting", "Create", "Meeting")
             @grid.GetHtml(columns:=grid.Columns(
                 grid.Column("compteRendu", "Compte Rendu"),
                 grid.Column("date", "date", canSort:=True),
                 grid.Column(columnName:="edit", format:=(item) => Html.ActionLink("Edit", "Meeting", new {id = item.Id})))
             )
     
    </fieldset>
    Avec ce code que je ne comprends pas trop (juste la ligne du lien que je gère pas), j'obtiens un message d'erreur :
    Compilation Error
    Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

    Compiler Error Message: BC30201: Expression expected.[/FONT]
    Line 122: grid.Column(columnName:="edit", format:=(item) => Html.ActionLink("Edit", "Meeting", new {id = item.Id})))

    Donc bon... J'ai compris qu'il me manquait un truc... Mais quoi?

    Sinon... J'apprends seul le langage... Et le peu de résultats que j'obtiens comparativement au temps passé me démotive de plus en plus. Ce que j'ai mis plus d'un mois à développer, je crois que je serais capable de le refaire en 1 jour ou 2... Un avis là dessus? Normal que je sois si lent à apprendre le .NET?



    édit : si besoin est, voici les classes complètes :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    @ModelType MvcApplication4.contact
     
    @Code
        ViewData("Title") = "Details"
     
        Dim grid = New WebGrid(ViewBag.listeMeeting, selectionFieldName:="SelectedRow")
        Dim item As ListItem
    End Code
     
    <h2>Details</h2>
     
    <fieldset>
        <legend>contact</legend>
        <div class="display-label">client</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.client.nomCompteClient)
        </div>
     
        <div class="display-label">civilite</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.civilite)
        </div>
     
        <div class="display-label">nom</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.nom)
        </div>
     
        <div class="display-label">prenom</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.prenom)
        </div>
     
        <div class="display-label">dateNaissance</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.dateNaissance)
        </div>
     
        <div class="display-label">telephone</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.telephone)
        </div>
     
        <div class="display-label">mobile</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.mobile)
        </div>
     
        <div class="display-label">mail</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.mail)
        </div>
     
        <div class="display-label">adresse</div>
        <div class="multiline">
            @Html.TextAreaFor(Function(model) model.adresse)
        </div>
     
        <div class="display-label">typeCompte</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.typeCompte)
        </div>
     
        <div class="display-label">titre</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.titre)
        </div>
     
        <div class="display-label">departement</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.departement)
        </div>
     
        <div class="display-label">qualifications</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.qualifications)
        </div>
     
        <div class="display-label">langue1</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.langue1)
        </div>
     
        <div class="display-label">langue2</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.langue2)
        </div>
     
        <div class="display-label">langue3</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.langue3)
        </div>
     
        <div class="display-label">langue4</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.langue4)
        </div>
     
        <div class="display-label">langue5</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.langue5)
        </div>
     
        <div class="display-label">dateDebCarriere</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.dateDebCarriere)
        </div>
     
        <div class="display-label">salaire</div>
        <div class="display-field">
            @Html.DisplayFor(Function(model) model.salaire)
        </div>
    </fieldset>
     
     
    <fieldset>
        <legend>Meetings</legend>
            @Html.ActionLink("Nouveau Meeting", "Create", "Meeting")
             @grid.GetHtml(columns:=grid.Columns(
                 grid.Column("compteRendu", "Compte Rendu"),
                 grid.Column("date", "date", canSort:=True),
                 grid.Column(columnName:="edit", format:=(item) => Html.ActionLink("Edit", "Meeting", new {id = item.Id})))
             )
     
     
     
    </fieldset>
     
     
     
     
    <p>
     
        @Html.ActionLink("Edit", "Edit", New With {.id = Model.idContact}) |
        @Html.ActionLink("Back to List", "Index")
    </p>
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    Imports System.Data.Entity
    Imports MvcApplication4
     
     
     
    Namespace MvcApplication4
        Public Class ContactsController
            Inherits System.Web.Mvc.Controller
     
            Private db As schema_crmEntities = New schema_crmEntities
     
            '
            ' GET: /Contacts/
     
            Function Index() As ViewResult
                Dim contact = db.contact.Include("client")
                Return View(contact.ToList())
            End Function
     
            '
            ' GET: /Contacts/Details/5
     
            Function Details(id As Integer) As ActionResult
                Dim contact As contact = db.contact.Single(Function(c) c.idContact = id)
                Dim listMeet = New List(Of meeting)
                listMeet = (From d In db.meeting
                           Where d.FK_meet_contact = id
                           Select d).ToList()
                ViewBag.ListeMeeting = listMeet
     
     
                Return View(contact)
            End Function
     
            '
            ' GET: /Contacts/Create
     
            Function Create As ViewResult
                ViewBag.FK_contact_client = New SelectList(db.client, "idClient", "nomCompteClient")
                return View()
            End Function
     
            '
            ' POST: /Contacts/Create
     
            <HttpPost()>
            Function Create(contact As contact) As ActionResult
                If ModelState.IsValid Then
                    db.contact.AddObject(contact)
                    db.SaveChanges()
                    Return RedirectToAction("Index")
                End If
     
                ViewBag.FK_contact_client = New SelectList(db.client, "idClient", "nomCompteClient", contact.FK_contact_client)
                Return View(contact)
            End Function
     
            '
            ' GET: /Contacts/Edit/5
     
            Function Edit(id As Integer) As ViewResult
                Dim contact As contact = db.contact.Single(Function(c) c.idContact = id)
                ViewBag.FK_contact_client = New SelectList(db.client, "idClient", "nomCompteClient", contact.FK_contact_client)
                Return View(contact)
            End Function
     
            '
            ' POST: /Contacts/Edit/5
     
            <HttpPost()>
            Function Edit(contact As contact) As ActionResult
                If ModelState.IsValid Then
                    db.contact.Attach(contact)
                    db.ObjectStateManager.ChangeObjectState(contact, EntityState.Modified)
                    db.SaveChanges()
                    Return RedirectToAction("Index")
                End If
     
                ViewBag.FK_contact_client = New SelectList(db.client, "idClient", "nomCompteClient", contact.FK_contact_client)
                Return View(contact)
            End Function
     
            '
            ' GET: /Contacts/Delete/5
     
            Function Delete(id As Integer) As ViewResult
                Dim contact As contact = db.contact.Single(Function(c) c.idContact = id)
                Return View(contact)
            End Function
     
            '
            ' POST: /Contacts/Delete/5
     
            <HttpPost()>
            <ActionName("Delete")>
            Function DeleteConfirmed(id As Integer) As RedirectToRouteResult
                Dim contact As contact = db.contact.Single(Function(c) c.idContact = id)
                db.contact.DeleteObject(contact)
                db.SaveChanges()
                Return RedirectToAction("Index")
            End Function
     
            Protected Overrides Sub Dispose(disposing As Boolean)
                db.Dispose()
                MyBase.Dispose(disposing)
            End Sub
     
        End Class
    End Namespace

  2. #2
    Membre régulier
    Homme Profil pro
    .Net developer
    Inscrit en
    Février 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net developer

    Informations forums :
    Inscription : Février 2012
    Messages : 99
    Points : 91
    Points
    91
    Par défaut
    Pour finir j'ai préféré ne pas utiliser de webgrid, et n'ai plus eu le souci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter un lien dans onet.xml
    Par bleuerouge dans le forum SharePoint
    Réponses: 1
    Dernier message: 26/02/2009, 09h51
  2. afficher un lien dans un webgrid
    Par aomar dans le forum Windows
    Réponses: 1
    Dernier message: 13/07/2007, 21h29
  3. afficher un lien dans un webgrid
    Par aomar dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/07/2007, 16h22
  4. [Info] Ajouter un lien dans eclipse
    Par eXiaNazaire dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/03/2006, 09h44

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