Envoyer le formulaire avec Kendo MVC Grid et d'autres éléments
Je suis en train d'essayer d'obtenir un Formulaire contenant un telekik MVC grille et d'autres éléments à présenter.
- La Vue modèle contient trois champs de type chaîne et un
IEnumerable
collection. - De la grille de serveur lié. Je ne suis pas l'ajout d'éléments ou d'en supprimer des éléments de la liste à l'aide de la grille, mais la grille contient une case à cocher mappé à une valeur booléenne de la colonne dans la liste des éléments.
Lorsque j'ai jamais soumettre ce formulaire les trois éléments de chaîne de retour dans la méthode post, mais la liste est toujours null.
Ici est le modèle de données:
public class Parent
{
public string Field1{get;set;}
public string Field2{get;set;}
public string Comments {get;set;}
public IEnumerable<ChildItems> Children{get;set;}
}
Public class ChildItems
{
public string ChildField1{get;set;}
public string ChildField2{get;set;}
public boolean Include{get;set;}
}
Voici mon avis:
@{
ViewBag.Title = "Index";
}
@model GridInForm.Models.Parent
@using(Html.BeginForm("Save", "Home"))
{
<fieldset>
<legend>Editing Parent</legend>
@Html.LabelFor(parent => parent.Field1)
@Html.EditorFor(parent => parent.Field1)
@Html.LabelFor(parent => parent.Field2)
@Html.EditorFor(parent => parent.Field2)
@Html.LabelFor(parent => parent.Comments)
@Html.EditorFor(parent => parent.Comments)
@(Html.Kendo().Grid(Model.Children)
.Name("Children")
.ToolBar(tools => tools.Create().Text("Add new Children"))
.Editable(editable => editable.Mode(GridEditMode.PopUp)
.CreateAt(GridInsertRowPosition.Bottom))
.Columns(columns =>
{
columns.Bound(p => p.ChildField1).ClientTemplate("#= ChildField1 #" +
"<input type='hidden' name='ChildField1[#= index(data)#].ChildField1'
value='#= Name #' />"
);
columns.Bound(p => p.ChildField2).Hidden().ClientTemplate("#= ChildField1
#" +
"<input type='hidden' name='ChildField1[#= index(data)#].ChildField1'
value='#= ChildField1 #' />"
);
columns.Command(command =>
{
//command.Destroy();
command.Edit();
}
).Width(100);
})
.DataSource(dataSource => dataSource.Server().Create("Create",
"Home").Read("Index", "Home").Update("Update", "Home")
.Model(model =>
{
model.Id(p => p.ChildField1);
model.Field(p => p.ChildField1).Editable(false);
})
//.ServerOperation(true)
)
)
</fieldset>
<input type="submit" value="Save" />
}
<script>
function index(dataItem) {
alert("bindind");
var data = $("#Products").data("kendoGrid").dataSource.data();
return data.indexOf(dataItem);
}
</script>
Quand je soumettre le formulaire, je reçois les parents d'articles dans la vue modèle, mais les Inumerable les champs de la grille sont toujours nulles..
Est-ce tout simplement pas la façon de le faire et si oui quel est le moyen de acommplish quelque chose comme ça. J'ai eu ce problème sur précédent telerik versions et je vois que c'est la même chose sur Kendo UI. N'importe quelle direction serait grandement apprécié. Cela a été long va sur la question.
source d'informationauteur user2016808
Vous devez vous connecter pour publier un commentaire.
J'ai exactement ce scénario fonctionne parfaitement dans mon projet. Voici ma grille de déclaration...
Voici l ' "indice" de la fonction:
Donc, ici, est le cadre d'une solution à votre question. J'ai étendu le kendo source de données, de sorte que vous pouvez appeler cette fonction et d'obtenir toutes les mises à jour, supprimées des postes créés. Il suffit de tourner en json et le renvoyer avec le reste de vos champs de formulaire. J'ai eu ce travail maintenant. Pensé que je voudrais partager.
J'ai été inspiré par codebeastie et @user1878526 pour produire les suivantes idée hybride - il suffit de retourner la grille comme une liste de chaînes pour le contrôleur de l'action save:
Contrôleur:
Vue:
Cela peut ensuite être analysée dans le contrôleur assez facilement par " Split pratiquent sur des virgules et des points.