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:
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:
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:
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 :
Citation:
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:
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:
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 |