MVC Syncfusion Grid-HTML EJ Grid-获取Jquery中所选行的主键

MVC Syncfusion Grid - HTML EJ Grid - Get Primary Key of Selected Row in Jquery

本文关键字:Jquery Grid-HTML Syncfusion EJ Grid- 获取 MVC      更新时间:2023-09-26

下面是我的网格代码,当在jquery中单击单元格时,我如何获得主键值?

我试过在网上搜索,但找不到一个有效的例子。有没有其他方法可以在不使用jquery或javascript的情况下获得值?

<div id="CampaignGrid">
@(Html.EJ().Grid.Test.Test>("Grid")
...     
})
.Columns(col =>
{
    col.Field("iCampaign").HeaderText("Campaign").IsPrimaryKey(true).TextAlign(TextAlign.Left).Width(50).AllowEditing(false).Add();
    col.Field("vCampaignName").HeaderText("Campaign Name").IsPrimaryKey(false).TextAlign(TextAlign.Left).Width(260).AllowEditing(false).Add();                       
})    

当您设置像col.Field("iCampaign")这样的字段时,您可以确定一个属性name="iCampaign"的标记,该标记将用于模型绑定。

所以您可以使用这样的jquery选择器:

$('[name = "iCampaign"]')

您也可以通过以下方式解决问题:

 @(Html.EJ().Grid<EmployeeView>("MasterGrid")
    .Datasource((IEnumerable<object>)ViewBag.datasource1)
    .SelectedRowIndex(0)      
    .Columns(col =>
    {
        col.Field("EmployeeID").HeaderText("Employee ID").IsPrimaryKey(true).TextAlign(TextAlign.Right).Width(125).Add();
        col.Field("FirstName").HeaderText("First Name").Width(100).Add();
        col.Field("LastName").HeaderText("Last Name").Width(100).Add();
        col.Field("Title").HeaderText("Title").Width(150).Add();
        col.Field("BirthDate").HeaderText("Birth Date").TextAlign(TextAlign.Right).Width(100).Format("{0:MM/dd/yyyy}").Add();
        col.Field("Country").Width(100).HeaderText("Country").Add();
    })
    .ClientSideEvents(eve => { eve.RowSelected("rowSelected"); })
    )
<script type="text/javascript">
    $(function () {           
        window.rowSelected = function (args) {
            var employeeID = args.data.EmployeeID;
            var detaildata = ej.DataManager(window.gridData).executeLocal(ej.Query().where("EmployeeID", ej.FilterOperators.equal, employeeID, false).take(10));
            var gridObj = $("#DetailGrid").ejGrid("instance");
            gridObj.model.dataSource = ej.DataManager(detaildata.slice(0, 5));
            $("#DetailGrid").ejGrid("refreshContent");
        }
    });
</script>

你可以试试这个

@(Html.EJ().Grid<EmployeeView>("MasterGrid")
    .Datasource((IEnumerable<object>)ViewBag.datasource1)
    .SelectedRowIndex(0)      
    .Columns(col =>
    {
        col.Field("EmployeeID").HeaderText("Employee ID").IsPrimaryKey(true).TextAlign(TextAlign.Right).Width(125).Add();
        col.Field("FirstName").HeaderText("First Name").Width(100).Add();
        col.Field("LastName").HeaderText("Last Name").Width(100).Add();
        col.Field("Title").HeaderText("Title").Width(150).Add();
        col.Field("BirthDate").HeaderText("Birth Date").TextAlign(TextAlign.Right).Width(100).Format("{0:MM/dd/yyyy}").Add();
        col.Field("Country").Width(100).HeaderText("Country").Add();
    })
    .ClientSideEvents(eve => { eve.CellEdit("cellEdit"); })
    )
    <script type="text/javascript">
      function cellEdit(args)
      {
         var pkName = args.primaryKey[0];
         var pkValue = args.rowData[pkName];
      }
     </script>