aw04
aw04

Reputation: 11187

Kendo UI Grid in MVC - How to return selected row Item to Controller

I have an MVC 4 application with a Kendo UI grid that I am using for user management. I display the users information in the grid and have a custom command button that when clicked opens a new page to edit the users information. For various reasons (one being there is too much information to be edited to display in the grid) I need to edit the users on a new page and not with inline or popup or incell editing. My grid looks like this... very simple

@(Html.Kendo().Grid<WebSiteNew.Models.ManageUsersViewModel>()
.Name("grid")
.HtmlAttributes(new { style = "margin-top: 5px" })
.Columns(c =>
{
    c.Bound(model => model.UserName);
    c.Bound(model => model.FirstName);
    c.Bound(model => model.LastName);
    c.Bound(model => model.Email);
    c.Bound(model => model.Phone);
    c.Bound(model => model.Extension);
    c.Bound(model => model.JobTitle);
    c.Command(com => { com.Custom("Edit").Click("edit"); com.Destroy(); });
})
.Pageable()
.Sortable()
.Selectable()
.DataSource(d => d
    .Ajax()
    .PageSize(20)
    .Model(m => m.Id(i => i.UserName))
    .Read(r => r.Action("ManageUsers_Read", "ManageUsers"))
    .Destroy(o => o.Action("ManageUsers_Destroy", "ManageUsers"))
))

The issue I have here is that I need to pass the ID of the user that the edit button has been clicked on to the edit screen so that I can bring up the information for the selected user. The only way I know of to get this information is through javascript, something like this in my command button click function...

function edit() {
    var grid = $("#grid").data("kendoGrid");
    var row = grid.select();
    var dataItem = grid.dataItem(row);
    var id = dataItem.UserId;

    location = "@Url.Action("EditUser")";
}

This gives me the id that I need but I have no way (that I know of) to pass this back to my controller. So my question is... how do I get this information back to the server side? Is there another way to get the information I need or is this just something that is not possible in Kendo UI MVC?

To make this a more general question.. when I look at the Kendo UI documentation and it tells me how to get a value in javascript... how, in general, does one go about using this value in an MVC application when it is needed on the server side? I can't seem to find an alternative "MVC" way to do this in their documentation.

Upvotes: 0

Views: 8332

Answers (1)

Kirill Bestemyanov
Kirill Bestemyanov

Reputation: 11964

You should form additional parameters to url string:

location = "@Url.Action("EditUser")" + "?id="+id;

Upvotes: 2

Related Questions