ASPxGridView GetSelectedFieldValues ​​не работает

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

Фрагмент ASPxGridView -

<dx:ASPxGridView ID="ASPxGridView1" runat="server" Font-Names="Arial" Font-Size="Small"
  Width="100%" ClientInstanceName="grid" oncustomcallback="grid_CustomCallback"                                              
  onbeforegetcallbackresult="ASPxGridView1_BeforeGetCallbackResult" 
  EnableCallBacks="False" EnableRowsCache="False" KeyFieldName="ID">

... Columns here ...

<ClientSideEvents ContextMenu="OnContextMenu" SelectionChanged="OnSelectionChanged" />      
</dx:ASPxGridView>

Примечание. Сетка заполняется с помощью DataTable.

Код таблицы данных -

protected DataTable GetHeadlineData(SqlDataReader rdr)
{
    DataTable headlineTable = new DataTable();        
    headlineTable.Load(rdr)
    headlineTable.PrimaryKey = new DataColumn[] { headlineTable.Columns["ID"] };
    return headlineTable;
}

Код загрузки страницы -

DataTable dt= new DataTable();    
dt= FillGrid(); //this function internally calls the above GetHeadlineData function
Session["headTable"] = dt;
ASPxGridView1.DataSource = Session["headTable"];
ASPxGridView1.KeyFieldName = "ID";
ASPxGridView1.DataBind();

Выбор измененных функций -

    function OnSelectionChanged(s, e) {              
        grid.GetSelectedFieldValues("ID", OnGetSelectedFieldValues);            
    }

    function OnGetSelectedFieldValues(result) {
        for (var i = 0; i < result.length; i++)
            for (var j = 0; j < result[i].length; j++) {
                document.getElementById('selectedRowDiv').innerHTML = result[i];                    
            }
    }        

Ошибка, которую я получаю -

A primary key field specified via the KeyFieldName property is not found in the 
underlying data source. Make sure the field name is spelled correctly. Pay 
attention to the character case.

person neuDev33    schedule 18.05.2012    source источник
comment
Можете ли вы опубликовать свой DataTable, с помощью которого вы загружаете gridview?   -  person sarwar026    schedule 18.05.2012


Ответы (3)


Попробуйте переместить свой код из метода Page_Load в метод Page_Init. В этом случае все должно работать как положено.

person platon    schedule 19.05.2012

 <dx:ASPxGridView ID="grid" ClientInstanceName="grid" runat="server" DataSourceID="AccessDataSource1"
            KeyFieldName="CustomerID" Width="100%">
                    </dx:ASPxGridView>

Необходимо указать уникальное имя столбца Ky KeyFieldName="Уникальное имя столбца".

person Purushotham.A    schedule 04.10.2012

В конечном итоге сработало использование события RowClick вместо SelectionChanged.

person neuDev33    schedule 21.05.2012