J'essaie d'utiliser jqGrid pour une interface utilisateur assez complexe. La grille devra éventuellement comporter une colonne déroulante, un autocompléteur et une colonne de boutons. Pour l'instant, j'ai du mal à comprendre comment mettre en place une colonne avec une balise select
qui remplit les valeurs d'une liste IEnumerable
sur mon modèle, définit la valeur sélectionnée initiale d'une propriété sur mon modèle, et modifie cette propriété lorsque l'utilisateur modifie la valeur de l'élément select
liste. Par exemple, disons que j'ai ces modèles :
public class GridRowModel
{
public int GridRowModelId { get; set; }
public string SomeText { get; set; }
public int SomeSelectOptionId { get; set; }
}
public class SelectOption
{
public int SomeSelectOptionId { get; set; }
public string Description { get; set; }
}
public class SomeModel {
public int SomeModelId { get; set; }
public IEnumerable<GridRowModel> GridRowModels { get; set; }
public IEnumerable<SelectOption> AllSelectOptions { get; set; }
}
El AllSelectOptions
propriété de SomeModel
est configuré dans le contrôleur, ainsi que tout le reste du modèle. Le contrôleur possède également une méthode GetSomeModelGridRows
qui renvoie un tableau de GridRowModel
pour la jqGrid rows
. Ensuite, j'ai Razor qui ressemble à quelque chose comme ça :
@model SomeModel
<table id="someModelGridRows" cellpadding="0" cellspacing="0"></table>
<div id="pager" style="text-align: center;"></div>
<script type="text/javascript">
$(document).ready(function() {
$("#someModelGridRows").jqGrid({
url: '@Url.Action("GetSomeModelGridRows")',
datatype: 'json',
mtype: 'POST',
colNames: ['GridRowModelId', 'Text', 'Select Option'],
colModel: [
{ name: 'GridRowModelId', index: 'GridRowModelId', hidden: true },
{ name: 'SomeText', index: 'SomeText' },
{ name: 'SomeSelectOptionId', index: 'SomeSelectOptionId', edittype: 'select',
**?? is this where I would do something and if so, what ??**
],
//the rest of the grid stuff
});
});
</script>
Dans une situation de non-réseau, cela serait simple en utilisant la fonction Html.DropDownListFor
aide. Y a-t-il un moyen de l'utiliser ici ? Est-ce que je m'y prends mal et/ou est-ce que c'est possible ?