probleme avec le ViewData
slt a vous voila j'ai une liste que j'affiche á travers le viewData.Model mais j'aimerais operer un filtre sur cette liste. j'ai essayé une requete ceci de plusieur maniere et constate par la suite que le rendu n'etait pas le escompté car mon ViewData.Model ne c'est pas reinitaliser alors afin de resoudre ce probleme je solicite une fois de plus votre assistance.
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
|
// ma zone de recherche dans ma liste
<% using (Html.BeginForm("AddEtudiant","Home"))
{%>
<%: Html.ValidationSummary(true) %>
<fieldset style=" width:35%">
<legend>Zone de Recherche d un Etudiant </legend>
<div class="editor-label">
<label>FirstName</label>
</div>
<div class="editor-field">
<%: Html.TextBox("FirstName") %>
</div>
<div class="editor-label">
<label> Cycle </label>
</div>
<div class="editor-field">
<%: Html.TextBox("Cycle") %>
</div>
<div class="editor-label">
<label> Options </label>
</div>
<div class="editor-field">
<%: Html.TextBox("options") %>
</div>
<div class="editor-label">
<label> Groupe </label>
</div>
<div class="editor-field">
<%: Html.TextBox("groupe") %>
</div>
<div class="editor-label">
<label> Niveau </label>
</div>
<div class="editor-field">
<%: Html.TextBox("Niveau") %>
</div>
<p>
<input type="submit" value="Rechercher" />
</p>
</fieldset>
<% } %> |
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
|
//mon controller
public ActionResult ListeEtudiant()
{
// affichage par defaut
if (ViewData["listetude"] == null)
{
var EtudiantListe = from et in _db.Etudiants
join etm in _db.EtudiantMatieres
on et.EtudiantId equals etm.EtudiantId
select new EtudiantModel
{
EtudiantId = et.EtudiantId,
FirstName = et.FirstName,
LastName = et.LastName,
Sexe = et.Sexe,
Numero = et.Numero,
Contact = et.contact,
Matricule = et.Matricule,
Email = et.Email,
Cycle = etm.Cycles,
options = etm.options,
groupe = etm.groupe,
Niveau = etm.Niveau
};
ViewData.Model = EtudiantListe;
}
//affichage apres filtrage en fontion de infos de la zone de recherche
if (ViewData["listetude"]!=null)
{
string query = "";
string select = "";
string from = "";
string where = "";
select = "SELECT * ";
from = " FROM Etudiant,EtudiantMatiere ";
where = " WHERE Etudiant.EtudiantId = EtudiantMatiere.EtudiantId ";
if (forme["FirstName"].Length > 0)
{
where = where + " AND Etudiant.FirstName LIKE '%" + forme["FirstName"] + "%'";
}
if (forme["Cycle"] !="0")
{
where = where + " AND EtudiantMatiere.Cycles LIKE '%" + forme["Cycle"] + "%'";
}
if (forme[" options"] !="0")
{
where = where + " AND EtudiantMatiere.options LIKE '%" + forme[" options"] + "%'";
}
if (forme[" groupe"]!="0")
{
where = where + " AND EtudiantMatiere.groupe LIKE '%" + forme[" groupe"] + "%'";
}
if (forme["Niveau"].Length > 0)
{
where = where + " AND EtudiantMatiere.Niveau LIKE '%" + forme["Niveau"] + "%'";
}
query = select + " " + from + " " + where;
var EtudiantListe = _db.ExecuteStoreQuery<EtudiantModel>(query).ToString();
ViewData.Model = EtudiantListe;
}
return View();
}
//
{
public ActionResult AddEtudiant(FormCollection form)
{
if(string.IsNullOrEmpty(form["Rechercher"]))
{
forme = form;
ViewData["listetude"] = "Initialiser";
ListeEtudiant();
return RedirectToAction("ListeEtudiant");
}
// notons que forme est variable FormeCollection global |
comme vous pouvez le voir ListeEtudiant est appelle apres excution du button recherche et l'initialisation du ViewData["listetude"] avant l'appelle permet excusion du bloque de filtrage pourtant au rendu j'obtient la meme liste au lieu d'une liste filtre.
alors que faire,comme resoudre ce probleme?
toute aide,assistance ou conseil sera la bien venus.
a++ :?