Hi,
I looked at the example in http://demos.kendoui.com/web/grid/editing-popup.html (ASP.NET MVC)
Kendo.Mvc.Examples.Models.ProductViewModel is a simple object,
I am interested in supporting Create and Update of an object that relates to other objects (in a Parent child manner)
For example : Lets say the grid shows Students and a Student relates to Phones via StudentPhones
The popup should enable the user to edit/create a Student with its Phones all together.
I wonder if you can supply me a project that shows how to handle the Create and Update in a similar scenario to the one I described.
Thanks in advance.
Lauri
p.s. My app is an N-Tier app using EntityFramework
5 Answers, 1 is accepted
Please check the attached example of Grid hierarchy editing using PopUp edit mode - you can use it as a baseline to achieve the desired behavior.
Also I would suggest to check this demo in our CodeLibrary which demonstrates how to configure Grid Ajax Hierarchy (3 level) Editing.
Vladimir Iliev
Telerik
Thanks for the examples ,
Still I wonder if there is a way that a controller will get a Parent with its children populated as a single parameter to the Create/Update Action (Navigation Property in EntityFramework),
Is there a way that the user will perform his Insert(s)/Update(s)/Delete(s) OFFLINE (in the UI) and when he will press Save the modified Model will be send to the controller?
Check the following code library which shows a work-around how to perform single request to update both the nested and the master Grids.
http://www.kendoui.com/code-library/mvc/grid/grid-popup-editing-navigation-property-collection-with-nested-grid.aspx
I hope this helps.
Regards,
Petur Subev
Telerik
Thanks for the example, Still have some issues , hopeyou can help,
My grid in the popup is based on StudentCourseViewModel (corresponding to TerritoryViewModel in the example)
StudentCourseViewModel has 4 fields studentId, couseId, FromDate ToDate
I need that when the user adds a row to the StudentCourse grid in the StudentViewModel.chtml Editor the following controls will be used
1. Courses Dropdown
2. A control for selecting Date and Time
3. A control for selecting Date and Time
How do I make the grid show these controls?
by the way I need that the courses selected by the user will not have duplicates , How do I enforce that?
Another thing I need to know is regarding Validation , in My MVC3 app I use DataAnnotations for validation and placed some @Html.ValidationMessageFor
in few places in the popup UI,For some reason although I see the ErrorMessage I customized in my DataAnnotations , only one error is shown at a time and it is placed
on top of the Update button. Can't I use @Html.ValidationMessageFor where I want the error message to show? How do I do Model Validation on the client side
(I need to enforce there will be at least one row in the studenCources grid)
How do I do validation of a row in the StudentCourse grid (e.g. Course and FromDate are reqired, ToDate>=FromDate etc.)
Tanks,
Lauri
Please find the answers of your questions below:
1) How do I make the grid show these controls? - you can check this article for more information about the EditorTemplates in the Grid.
2) I need that the courses selected by the user will not have duplicates , How do I enforce that? - you can add custom validation function which to validate this field against the other records in the Grid. This can be achieved by extending the Grid build-in validator:
e.g.:
(
function
($, kendo) {
//Extending the Grid build in validator
$.extend(
true
, kendo.ui.validator, {
rules: {
// custom rules
custom:
function
(input, params) {
if
(input.is(
"#Category"
)) {
//If the input is LastSupply
var
ddl = $(input).data(
"kendoDropDownList"
);
var
grid = $(input).closest(
"[data-role=grid]"
).data(
"kendoGrid"
);
var
allRecords = grid.dataSource.data();
//validate the input agains other records in the grid
if
(isNotValid) {
return
false
;
}
}
//return true if the validation pass
return
true
;
}
},
messages: {
//custom rules messages
custom:
function
(input) {
// return the message text
return
"Please select another option"
;
}
}
});
})(jQuery, kendo);
3) Can't I use @Html.ValidationMessageFor where I want the error message to show? How do I do Model Validation on the client side - basically this is the correct way of specifying the place of the validation message - if you need additional help I would suggest to open an new support thread / forum post with more details about what exactly you are trying to achieve.
4) How do I do validation of a row in the StudentCourse grid (e.g. Course and FromDate are required, ToDate>=FromDate etc.) - please check the second answer above which demonstrates how to add custom validation to the Grid.
Kind Regards,
Vladimir Iliev
Telerik