【问题标题】:How to highlight a particular row in a page of a DevExpress MVC GridView?如何突出显示 DevExpress MVC GridView 页面中的特定行?
【发布时间】:2012-01-16 04:01:52
【问题描述】:

我想选择 DevExpress MVC GridView 的特定行,其中包含一个键值。我在gridview中尝试了以下代码。

settings.DataBound = (sender, e) =>
    {
        MVCxGridView grid = (MVCxGridView)sender;

        grid.PageIndex = 5;

    };

    settings.PreRender = (sender, e) =>
    {

        MVCxGridView grid = (MVCxGridView)sender;

        grid.FocusedRowIndex = grid.FindVisibleIndexByKeyValue(35);



    };

我希望在这里突出显示包含键值 35 的第 5 页的行。上面的代码不适用于我的行选择。

请任何人提出解决方案。

提前致谢。

【问题讨论】:

  • 您使用的是 Selection 还是 FocusedRow 功能?
  • 我已经为“Focused Row”案例更新了我的代码 sn-p。我相信不再需要“DataBound”事件处理程序。
  • 选择、聚焦还是突出显示?这三件事是不同的。

标签: asp.net-mvc gridview devexpress


【解决方案1】:

行选择:

您可以通过ASPxGridView.Selection.SetSelectionByKey方法选择所需的DataRow,方式如下:

C#:

settings.PreRender = (sender, e) => {
    ASPxGridView gridView = (ASPxGridView)sender;

    object keyValue = 35;
    gridView.Selection.SetSelectionByKey(keyValue, true);
};

VB.NET:

settings.PreRender = _
    Sub(sender, e)
        Dim gridView As ASPxGridView = CType(sender, ASPxGridView)

        Dim keyValue As Object = 35
        gridView.Selection.SetSelectionByKey(keyValue, True)
    End Sub

您可以在 DevExpress 支持库中找到类似的实现:

http://www.devexpress.com/Support/Center/p/Q317380.aspx

重点行:

C#:

settings.PreRender = (sender, e) => {
    ASPxGridView gridView = (ASPxGridView)sender;

    object keyValue = 35;
    gridView.FocusedRowIndex = gridView.FindVisibleIndexByKeyValue(keyValue);

};

VB.NET:

settings.PreRender = _
    Sub(sender, e)
        Dim gridView As ASPxGridView = CType(sender, ASPxGridView)

        Dim keyValue As Object = 35
        gridView.FocusedRowIndex = gridView.FindVisibleIndexByKeyValue(keyValue)
    End Sub

【讨论】:

  • 感谢您的回复。但是,我的页面在更新后被回发,上述方法对我不起作用,并且在回发后缺少焦点行。最后我得到了一个使用 javascript 函数的解决方案。
【解决方案2】:

我得到了一个使用客户端 javascript 函数的解决方案。

 settings.PreRender = (sender, e) =>
   {

       MVCxGridView grid = (MVCxGridView)sender;

       var selected = 35;
       if (Convert.ToInt64(selected) > 0)
       {
           int index = grid.FindVisibleIndexByKeyValue(selected );

           grid.PageIndex = index / grid.SettingsPager.PageSize;

           grid.ClientSideEvents.Init = @"function(s, e) 
           { s.SetFocusedRowIndex(" + index + ");}";

      }

   };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2012-04-04
    • 1970-01-01
    • 2022-01-15
    • 2018-11-06
    相关资源
    最近更新 更多