0

I have a DevExpress MVC GridView where I want to handle the SelectionChanged event solely on the client side, and wire any postings to the server myself using AJAX.

My GridView calls my SelectionChanged() function, but the code s.GetSelectedFieldValues("MedicalRecordNumber", GetSelectedFieldValuesCallback); within that function seems to do nothing, and GetSelectedFieldValuesCallback(values) is not called.

Here's my GridView partial view, it has no markkup...

@model IEnumerable<CaseReview>

@Html.DevExpress().GridView(
settings =>
{
    settings.Name = "workListTable";
    settings.Width = Unit.Percentage(90);
    settings.SettingsBehavior.AllowSort = true;
    settings.Settings.ShowFilterRow = true;
    settings.KeyFieldName = "UUID";
    settings.Columns.Add(column =>
    {
        column.FieldName = "CaseReviewID";
        column.Caption = "CaseReviewID";
        column.CellStyle.CssClass = "devExCaseIdHidden";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "FacilityName";
        column.Caption = "FacilityName";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "MedicalRecordNumber";
        column.Caption = "Medical Record Number";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "DateOfBirth";
        column.Caption = "DateOrBirth";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "AgeInYears";
        column.Caption = "AgeInYears";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "Sex";
        column.Caption = "Sex";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "AdmitDate";
        column.Caption = "AdmitDate";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "LOS";
        column.Caption = "LOS";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "DischargeStatus";
        column.Caption = "DischargeStatus";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "ROM";
        column.Caption = "ROM";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "SOI";
        column.Caption = "SOI";
    });
    settings.Columns.Add(column =>
    {
        column.FieldName = "Category";
        column.Caption = "Category";
    });
    settings.CommandColumn.ShowSelectCheckbox = true;
    settings.CommandColumn.Visible = true;
    settings.ClientSideEvents.SelectionChanged = "SelectionChanged";
    settings.ClientSideEvents.RowDblClick = "function(s, e) { OnRowClick(s, e); }";
}).Bind(Model).GetHtml()

...and here's the relevant bit of Javascript...

function SelectionChanged(s, e) {
    s.GetSelectedFieldValues("MedicalRecordNumber", GetSelectedFieldValuesCallback);
    alert("new row selected");
}

function GetSelectedFieldValuesCallback(values) {
    for (var i = 0; i < values.length; i++) {
        var item = values[i];
    }
}

As I said the GetSelectedVieldValuesCallback(values) function is not called, and returns undefined. I'm following the example presented here very closely.

1 Answers1

0

It is necessary to implement settings.CallbackRouteValues mode.

Check this KB to learn more on how to proceed.

Mikhail
  • 9,186
  • 4
  • 33
  • 49