Devexpress ASPxGridView GetSelectedFieldValues ​​Не удается получить значения - PullRequest
4 голосов
/ 26 мая 2010

Я использую gridview с пейджингом. Моя сетка имеет командный столбец, и ShowSelectCheckbox имеет значение true. Я связываю DataTable с сеткой на событии Page_Load с условием [if (!IsCallback)].

Поэтому, когда я изменяю данные индекса страницы теряются После этого я написал код привязки к событию PageIndexChanged сетки. Теперь это работает как шарм.

Но GetSelectedFieldValues работает только на первой странице, когда происходит событие SelectionChanged.

В примере, когда я выбираю строку на первой странице, она получает значения полей, которые я хочу. Но когда я изменяю pageindex GetSelectedField не могу получить значения поля. Предупреждает пустой текст.

Если я выбираю строку со вторым индексом страницы, она также работает и на этой странице, но когда я изменяю индекс страницы, она снова ломается.

Кстати, он работает, когда я связываю сетку на событии PageLoad без условия !IsCallback, но я не могу связать его на событии Page_Load, поскольку другие элементы управления должны изменить запрос и данные.

Здесь идет моя функция JavaScript, которая предупреждает выбранные значения

<ClientSideEvents SelectionChanged="function(s, e) {
    grid.GetSelectedFieldValues('SDNO;SANTRAL',alert);
}" />

И индекс страницы изменил событие

protected void myGrid_PageIndexChanged(object sender, EventArgs e)
    {
        myGridDataSource = dtable; //dtable is static, i also used BindThat function here too. But no way out.
        myGridDataBind();
    }

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsCallback)
    {
        BindThat(); // Fetch data from db, create dtable and bind it to grid.
    }
}

Ответы [ 4 ]

1 голос
/ 29 июня 2010

Метод ASPxClientGridView.GetSelectedFieldValues ​​отправляет обратный вызов для получения указанных данных. Таким образом, если вы не привязываете ASPxGridView на стороне сервера при этом обратном вызове (а на самом деле это не так - из-за условия [if (! IsCallback)]) сетка не может вернуть данные.

Кстати, это работает на текущей странице, потому что ASPxGridView кэширует данные для текущей страницы (см. Определение свойства EnableRowsCache).

1 голос
/ 26 мая 2010

Я думаю, что это неправильный способ получения значений из сетки на стороне клиента, проверьте следующую ссылку: http://www.devexpress.com/Support/Center/p/Q94237.aspx

[JScript]
function Button1_onclick() {
    ASPxGridView1.GetSelectedFieldValues("CategoryID;CategoryName", OnGetSelectedFieldValues);
}

function OnGetSelectedFieldValues(result) {
    for(var i = 0; i < result.length; i ++)
        for(var j = 0; j <result[i].length; j++) {
            alert(result[i][j]);
        }
} 

Вопрос: ваша сетка поддерживает множественный выбор?

Edit1 : Также проверьте следующие примеры:

Как использовать метод GetSelectedFieldValues ​​для получения значений нескольких столбцов одновременно

Как получить значения выбранной записи с сервера

0 голосов
/ 03 февраля 2016

А также, пожалуйста, проверьте KeyFieldName Grid. Если эта информация не указана или неверна, вы также не сможете получить значения в клиентском событии GetSelectedFieldValues.

0 голосов
/ 27 мая 2010

Вы можете попробовать отключить обратные вызовы для сетки. Я обнаружил, что это решает некоторые проблемы, с которыми я сталкиваюсь с сеткой. Я не уверен, что это сработает, но, возможно, оно того стоит.

<dxwgv:ASPxGridView ID="xgvMyGrid" runat="server" AutoGenerateColumns="False"
 EnableCallBacks="False">

Примечание ... Несмотря на то, что сетка должна работать нормально, это может повлиять на другой код, который у вас уже есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...