2

I want to select a particular row of a DevExpress MVC GridView, which contains a keyvalue. I tried the following codes in the 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);



    };

Here what I wish to get is to highlight the row of 5th page which contains the keyvalue 35. The above code does not work for me for row selection.

Please anybody suggest a solution.

Thanks in advance.

Prasanth
  • 3,029
  • 31
  • 44

2 Answers2

3

Row Selection:

You can select the required DataRow via the ASPxGridView.Selection.SetSelectionByKey method in the following manner:

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

You can find a similar implementation in DevExpress support base:

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

Focused Row:

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
Mikhail
  • 9,186
  • 4
  • 33
  • 49
  • Thanks for your response. However my page is getting post back after an update the above method does not work for me and it is missing the focused row after the postback. At last I got a solution which is using a javascript function. – Prasanth Jan 17 '12 at 06:18
2

I got a solution which is using a clientside javascript function.

 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 + ");}";

      }

   };
Prasanth
  • 3,029
  • 31
  • 44