D'actualisation après la mise à jour de Telerik Kendo Grille (MVC)
J'ai un Kendo Grille avec certains environnements de données. L'un des champs de la grille est "isDefault" qui recevoir 1 ou 0 (vrai ou faux). Dans la base de données j'ai un déclencheur que lorsqu'un enregistrement est réglé sur isDefault = 1 un autre enregistrement est mise à jour à isDefault = 0, juste pour s'assurer qu'il n'y est qu'un environnement par défaut.
Le Kendo grille fonctionne bien, il lie les données et met à jour les enregistrements de très bien, mais après la mise à jour, la grille n'est pas l'actualisation de tous les dossiers et s'il y avait, disons, de 1 enregistrement avec isDefault =1 et I mettre à jour l'enregistrement de 4 à isDefault = 1, le trigger est déclenché et les mises à jour de tous les autres dossiers de isDefault = 0 mais la grille affiche toujours 1 enregistrement avec isDefault = 1 et maintenant enregistrer 4 avec isDefault = 1
C'est le code de mon point de vue:
Html.Kendo().Grid<Models.Environment>()
.Name("environmentGrid")
.Sortable()
.ToolBar(tb => tb.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Columns(cols =>
{
cols.Bound(c => c.Name).Width(150).Sortable(true);
cols.Bound(c => c.ConnectionString).Width(150).Sortable(true);
cols.Bound(c => c.Template).Width(150).Sortable(true);
cols.Bound(c => c.isDefault).Width(150).Sortable(true);
cols.Bound(c => c.StatusID).Width(150).Sortable(true);
cols.Command(command => { command.Edit();}).Width(60);
})
.DataSource(ds => ds
.Ajax()
.Model(model =>
{
model.Id(m => m.EnvironmentID);
})
.Read(r => r.Action("GetEnvironments", "Admin"))
.Update(update => update.Action("UpdateEnvironments", "Admin"))
.Create(update => update.Action("UpdateEnvironments", "Admin"))
)
et c'est le code sur mon contrôleur:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateEnvironments([DataSourceRequest] DataSourceRequest dsRequest, Environment environment)
{
environment.ModifiedBy = userName;
if (environment != null && ModelState.IsValid)
{
if (environment.EnvironmentID != 0)
{
var toUpdate = xgr.EnviromentRepository.ListAll().FirstOrDefault(p => p.EnvironmentID == environment.EnvironmentID);
TryUpdateModel(toUpdate);
}
xgr.EnviromentRepository.Save(environment);
}
return Json(ModelState.ToDataSourceResult());
}
Je vous remercie d'avance pour vos réponses.
OriginalL'auteur Yatiac | 2014-06-10
Vous devez vous connecter pour publier un commentaire.
J'ai enfin le faire fonctionner. Ajout d'un gestionnaire d'événement:
Et une Fonction Javascript:
Aussi j'ai dû modifier mon ListAll() la Méthode la EnvironmentRepository être comme ceci:
OriginalL'auteur Yatiac
Vous êtes de retour le mauvais objet. Je ne sais pas vraiment comment vous obtenez vos données, car tu n'as pas posté le
GET
contrôleur, donc je vais essayer de le deviner. Après avoir mis à jour vos données, vous devez les envoyer de nouveau à la grille. LeModelState
ne contient pas les données que vous souhaitez. Essayez ceci:Veuillez voir ce lien pour un exemple complet.
Bonjour, Dans la dernière ligne (commentaire 3) je pense que vous vouliez dire
updatedRecords.ToDataSourceResult
au lieu deModelState.ToDataSourceResult
. De toute façon, il ne fonctionne pas. J'ai aussi essayé le même exemple que vous avez posté et de rien.OriginalL'auteur Andrei V