简体   繁体   English

如何从Syncfusion MVC Grid中的选定行获取列值

[英]How to get column value from selected row from Syncfusion MVC Grid

Im My application ASP.NET MVC 5 im using Syncfusion controls. 我的应用程序ASP.NET MVC 5即时通讯使用Syncfusion控件。

Here is my view: 这是我的观点:

@using Reporter.Models
@model List<UsersListViewModel>


@(Html.EJ().Grid<object>("FlatGrid")
    .Datasource(Model)
    .AllowFiltering()
    .FilterSettings(d => d.FilterType(FilterType.Menu))
    .AllowSorting()
    .ToolbarSettings(toolBar => toolBar.ShowToolbar().ToolbarItems(items =>
    {
        items.AddTool(ToolBarItems.ExcelExport);
    }))
    .Columns(col =>
    {

        col.Field("OrderNumber").HeaderText("Lp.").TextAlign(TextAlign.Left).Width(15).AllowFiltering(false).Add();
        col.Field("UserName").HeaderText("Nazwa użytkownika").Width(50).Add();
        col.Field("CanReadReports").HeaderText("Dostęp do raportów").Width(40).AllowSorting(false).HeaderTextAlign(TextAlign.Center).Add();
        col.Field("IsAdministrator").HeaderText("Administrator").Width(40).AllowSorting(false).Add();
    })
    .Mappers(map => map.ExportToExcelAction("Account/UserListExportToExcel"))
    .AllowSelection()
    .SelectionType(SelectionType.Single)
)
<hr/>
<p style="text-align: justify">
    @Html.ActionLink("Nowy użytkownik", "Register", "Account",
    null,
    new { @class = "btn btn-default" }
    )
    @Html.ActionLink("Usuń użytkownika", "Register", "Account",
    new {user = "UserNameToRaplace"}, //here i want UserName from selected row
    new { @class = "btn btn-default" }
    )
    @Html.ActionLink("Zmień hasło", "Manage", "Account",
    new { user = "UserNameToRaplace"},
    new { @class = "btn btn-default" }
    )
</p>

And my problem is how to get UserName from selected row and paste it in ActionLink. 我的问题是如何从选定行获取UserName并将其粘贴到ActionLink中。

You can get the selected information in the getSelectedRecords method. 您可以在getSelectedRecords方法中获取所选信息。 But it will return all the selected records when multi-selection is enabled in grid. 但是当在网格中启用多选时,它将返回所有选定的记录。

So to get the current selected row data, you can simply access it from the arguments of the rowSelected event. 因此,要获取当前选定的行数据,只需从rowSelected事件的arguments中访问它rowSelected

function onRowSelected(args) {
    var userName = args.data.UserName;

    //Do something.
};

Reference links: http://help.syncfusion.com/js/api/ejgrid#events:rowselected 参考链接: http//help.syncfusion.com/js/api/ejgrid#events : rowselected

In grid definition add 在网格定义中添加

.ClientSideEvents(evt => evt.RowSelected("onRowSelected"))

and add javascript function 并添加javascript函数

<script>    
    function onRowSelected(args) {
        var result = this.getSelectedRecords();

        var userName = result[0].UserName;        

        var deleteUserLink = $("#DeleteUser").attr('href');
        var changePassUserLink = $('#ChangePass').attr('href');

        var newDeleteUserLink = deleteUserLink.replace("UserNameToRaplace", userName);
        var newChangePassUserLink = changePassUserLink.replace("UserNameToRaplace", userName);

        var deleteUserLink = $("#DeleteUser").attr('href', newDeleteUserLink);
        var changePassUserLink = $('#ChangePass').attr('href', newChangePassUserLink);
    };
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM