Как я могу сделать пользовательский столбец в сетке Kendo, чтобы он перенаправлял на действие в контроллере - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть сетка, в которой последний столбец должен быть кнопкой, которая перенаправляет на действие в моем контроллере.

Мне нужно изменить страницу для отображения данных в сетке кендо вместо таблицы.

У меня проблема в том, как передать идентификатор текущего элемента в действие.

Вот старая таблица

<table class="table">
                    <tr>
                        <th>
                            @Html.DisplayNameFor(model => model.Name)
                        </th>
                        <th>
                            @Html.DisplayNameFor(model => model.LastName)
                        </th>
                        <th>
                            @Html.DisplayNameFor(model => model.Email)
                        </th>
                    </tr>

                    @foreach (var item in Model)
                    {
                        <tr>
                            <td>
                                @Html.DisplayFor(modelItem => item.Name)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.LastName)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Email)
                            </td>
                            <!--<td>
                                Html.DisplayFor(modelItem => item.UserName)
                            </td>-->
                            <td>
                                <a asp-action="Edit" asp-route-id="@item.Id" class="btn btn-default btn-xs">Edit</a>  |
                                <a asp-action="Delete" asp-route-id="@item.Id" class="btn btn-default btn-xs">Delete</a>
                            </td>
                        </tr>
                    }

                </table>

А вот и обновленный

 @(Html.Kendo().Grid<EndoIS.Models.UserViewModel>()
            .Name("Videos")
            .Columns(columns => {
                columns.Bound(p => p.Name);
                columns.Bound(p => p.LastName);
                columns.Bound(p => p.Email);
            })
            .Pageable(pager => pager
                .Messages(messages => messages.Display("{0} - {1} od {2} vrstic"))
                .Messages(messages => messages.ItemsPerPage("rows per page"))
                .Messages(messages => messages.Empty("No rows"))
                )
            .Sortable()
            .Pageable(pageable => pageable
                .Refresh(true)
                .PageSizes(true)
                .ButtonCount(5))
            .DataSource(datasource => datasource
                 .Ajax()
                 .ServerOperation(false)
                 .Read(read => read.Action("List", "UserAdmin"))
            )
)

Теперь, как я могу добавить последний столбец из старой таблицы в эту сетку, чтобы она открывала ту же страницу.

1 Ответ

0 голосов
/ 19 сентября 2018

Я нашел простой способ доступа к текущей модели с помощью #= Id #, поэтому я сделал это так

columns.Bound(p => p.Email).ClientHeaderTemplate("Edit").ClientTemplate(@"<a href='" + Url.Action("Edit") + "/#= Id #' class='btn btn-info btn-xs'>Edit</a>").Width(100);

Возможно, есть лучший способ сделать это, но я сделал это так, и этоработы

...