Ahmet Kakıcı
Ahmet Kakıcı

Reputation: 6404

Devexpress ASPxGridView GetSelectedFieldValues Can't get values

I'm using a gridview with paging. My grid has a command column and ShowSelectCheckbox is set to true. I bind DataTable to grid at Page_Load event with the condition [ if (!IsCallback) ].

So when i change page index data is lost. After that i wrote bind code to grid's PageIndexChanged event. Now it works like charm.

But GetSelectedFieldValues works only at first page when SelectionChanged event occurs.

In example when i select a row at first page it gets the field values that i want. But when i change pageindex GetSelectedField cannot get the field values. It alerts empty text.

If i select a row at second page index it works at that page too, but when i change page index it's broken again.

BTW it works when i bind the grid at PageLoad event without !IsCallback condition but i can't bind it at Page_Load event because of other controls must have to change the query and so data.

Here goes my javascript function which alerts selected values

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

And page index changed event

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.
    }
}

Upvotes: 4

Views: 39843

Answers (4)

Onur Omer
Onur Omer

Reputation: 526

And also please check the KeyFieldName of Grid. If this information is not specified or not correct you may also not be able to retrieve the values in GetSelectedFieldValues client event.

Upvotes: 0

Beresta
Beresta

Reputation: 706

ASPxClientGridView.GetSelectedFieldValues method send a callback to get the specified data. So, if you don't bind the ASPxGridView at the server side on this callback (and you actually don't - because of condition [ if (!IsCallback) ]) grid cannot return the data.

BTW, this works on the currect page because ASPxGridView is caching the data for the current page (see EnableRowsCache property definition).

Upvotes: 1

AGoodDisplayName
AGoodDisplayName

Reputation: 5653

You may want to try turning off callbacks for the grid. I've found that this solves some issues that I run into with the grid. I am not sure this will work, but it may be worth a shot.

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

Note...Although the grid should still work just fine, this may affect other code you may already have in place.

Upvotes: 0

Wael Dalloul
Wael Dalloul

Reputation: 23014

I think this is not the correct way to get the values from the grid at client side, check the following link: 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]);
        }
} 

Question: is your grid support multiple selection?

Edit1: Check the following Examples as well:

How to use a GetSelectedFieldValues method to obtain values of several columns at once

How to get the values of the selected record from the server

Upvotes: 2

Related Questions