Как выделить конкретную строку на странице DevExpress MVC GridView? - PullRequest
2 голосов
/ 16 января 2012

Я хочу выбрать конкретную строку 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);



    };

Здесь я хочу выделить строку 5-й страницы, которая содержит ключевое значение 35. Приведенный выше код не работает для меня при выборе строки.

Пожалуйста, кто-нибудь предложит решение.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Выбор строки:

Вы можете выбрать необходимую DataRow с помощью метода ASPxGridView.Selection.SetSelectionByKey следующим образом:

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
2 голосов
/ 17 января 2012

Я получил решение, которое использует функцию 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 + ");}";

      }

   };
...