【问题标题】:Devexpress MVC5 Grid GetRowKey(e.visibleIndex) returns always nullDevexpress MVC5 Grid GetRowKey(e.visibleIndex) 始终返回 null
【发布时间】:2018-10-10 01:11:33
【问题描述】:

大家好,我正在尝试获取所选行的主键以稍后将其发送到服务器这里是代码: 这是主页

     <script type="text/javascript">
        function OnRowClick(s, e) {
        var grid = MVCxClientGridView.Cast(s);
        var key = grid.GetRowKey(e.visibleIndex);
        console.log(key);

        $.ajax({
          url: '@Url.Action("FundDetails", "Fund")',
          type: "POST",
          dataType: "text",
          traditional: true,
          data: { rowKey: key },
          success: function (data) {
          console.log(data);
          },
          error: function (xhr, textStatus, errorThrown) {
          alert('Request Status: ' + xhr.status + '; Status Text: ' + textStatus + 
          '; Error: ' + errorThrown);
          }
          });
           }
    </script>

<div>
@Html.Partial("_FundsList", Model)
</div>

这是包含 Grid 的局部视图

  @Html.DevExpress().GridView(settings =>
  {

  settings.Name = "FundGrid";
  settings.CallbackRouteValues = new { Controller = "Fund", Action = 
  "FundsList" };
  settings.Width = 450;
  settings.Columns.Add("codeIsin");
  settings.Columns.Add("fundLabel");
  settings.Columns.Add("variation");
  settings.Columns.Add("ClassNiv1");
  settings.SettingsBehavior.AllowSelectByRowClick = true;
  settings.SettingsBehavior.AllowSelectSingleRowOnly = true;
  settings.ClientSideEvents.RowClick = "OnRowClick";
  }).Bind(Model).GetHtml()

问题是键值始终为空:

var key = grid.GetRowKey(e.visibleIndex); ==> 始终为 Null

PS : e.visibleIndex 不为空。

【问题讨论】:

    标签: asp.net-mvc gridview devexpress-mvc onrowclick


    【解决方案1】:

    GetRowKey 方法解释了 null 值是如何返回的:

    如果通过 visibleIndex 参数传递的索引错误,或 ASPxGridBase.KeyFieldName 属性未设置,返回 null。

    您可能需要设置KeyFieldName,它指的是GridView 中的主键和/或标识字段(具有唯一值),如下例所示:

    @Html.DevExpress().GridView(settings =>
    {
        settings.Name = "FundGrid";
        settings.CallbackRouteValues = new { Controller = "Fund", Action = "FundsList" };
        settings.Width = 450;
        settings.Columns.Add("codeIsin");
        settings.Columns.Add("fundLabel");
        settings.Columns.Add("variation");
        settings.Columns.Add("ClassNiv1");
    
        // set primary/identity key field to determine selected row index
        settings.KeyFieldName = "codeIsIn";
    
        settings.SettingsBehavior.AllowSelectByRowClick = true;
        settings.SettingsBehavior.AllowSelectSingleRowOnly = true;
        settings.ClientSideEvents.RowClick = "OnRowClick";
    }).Bind(Model).GetHtml()
    

    您还可以在执行 AJAX 调用之前使用if 条件检查空值,以确保正确传递关键字段值:

    var key = grid.GetRowKey(e.visibleIndex);
    
    if (key != null)
    {
        $.ajax({
            url: '@Url.Action("FundDetails", "Fund")',
            type: "POST",
            data: { rowKey: key },
            // other AJAX settings
            success: function (data) {
                // do something
            },
            error: function (xhr, textStatus, errorThrown) {
                // error handling
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 2015-08-15
      • 2012-03-18
      • 2016-11-04
      • 2016-07-28
      • 2010-11-08
      • 2017-11-26
      • 2015-02-23
      • 2017-11-16
      相关资源
      最近更新 更多