2014-10-11 7 views
3

Мне нужно обновить DevExpress GridView в функции успеха ajax после операции. Я использую метод gridName.Refresh(), но javascript бросает ошибку «udefined is not a function». Но когда я пишу этот метод в окне консоли Google Chrome, он работает нормально. В чем проблема? В дополнение мои коды javascript находятся в другом файле JavaScript, а не в html-кодах.DevExpress MVC Обновление GridView

Это мои JQuery коды Аякса, что в файле разделенным яваскрипта

function sendToMethod(url) { 
    $.ajax({ 
     type: 'GET', 
     url: url, 
     contentType: 'application/html; charset=utf-8', 
     datatype: 'html' 
    }) 
    .success(function (result) { 
     onCloseClick(); 
     gv_locations.UnselectRows();//gv_locations is not defined 
     gv_locations.Refresh();//there is the same error here too 
    }) 
    .error(function (result) { 

    }); 
} 

Это мой файл GridViewPartial.cshtml

@Html.DevExpress().GridView(g => 
{ 
    g.Name = "gv_locations"; 
    g.KeyFieldName = "PublicIP"; 
    g.SettingsPager.PageSize = 21; 
    g.Width = System.Web.UI.WebControls.Unit.Percentage(100); 
    g.ClientSideEvents.SelectionChanged = "onGridSelectionChanged"; 
    g.SettingsEditing.Mode = GridViewEditingMode.EditFormAndDisplayRow; 

    g.CommandColumn.Visible = true; 
    g.Settings.ShowGroupPanel = true; 
    g.CommandColumn.ShowEditButton = true; 
    g.CommandColumn.ShowDeleteButton = true; 
    g.CommandColumn.ShowSelectCheckbox = true; 
    g.SettingsBehavior.AllowFocusedRow = true; 
    g.CallbackRouteValues = new { Controller = "Location", Action = "LocationGridViewPartial", id = ViewBag.Type }; 

    g.SettingsEditing.UpdateRowRouteValues = new { Controller = "Location", Action = "LocationGridViewInlineUpdate" }; 
    g.SettingsEditing.DeleteRowRouteValues = new { Controller = "Location", Action = "LocationGridViewInlineDelete" }; 

    g.Columns.Add(column => 
    { 
     column.Caption = "Client"; 
     column.FieldName = "ClientID"; 
     column.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False; 
    }); 

    g.Columns.Add(column => 
    { 
     column.Caption = "IP"; 
     column.FieldName = "PublicIP"; 
     column.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False; 
    }); 

    g.Columns.Add("PublicIPName", "Lokasyon Adı"); 

    g.Columns.Add(column => 
    { 
     column.Caption = "Konum Tipi"; 
     column.FieldName = "SelectedLocationTypeID"; 
     column.ColumnType = MVCxGridViewColumnType.ComboBox; 
     var comboBoxProperties = column.PropertiesEdit as ComboBoxProperties; 
     comboBoxProperties.DataSource = AtomicAdminPanel.Models.External.Location.LocationDataProvider.GetLocationTypes(); 
     comboBoxProperties.TextField = "SelectedLocationTypeName"; 
     comboBoxProperties.ValueField = "SelectedLocationTypeID"; 
    }); 

    g.Columns.Add(column => 
    { 
     column.Caption = "Oluşturan"; 
     column.FieldName = "CreatedUser"; 
     column.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False; 
    }); 

    g.Columns.Add(column => 
    { 
     column.Caption = "Oluşturma Tarihi"; 
     column.FieldName = "CreatedDateTime"; 
     column.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False; 
    }); 

    g.Columns.Add(column => 
    { 
     column.Caption = "Değiştiren"; 
     column.FieldName = "ChangedUser"; 
     column.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False; 
    }); 

    g.Columns.Add(column => 
    { 
     column.Caption = "Değiştime Tarihi"; 
     column.FieldName = "ChangedDateTime"; 
     column.EditFormSettings.Visible = DevExpress.Utils.DefaultBoolean.False; 
    }); 

    g.Columns.Add("IsActive", "Aktif", MVCxGridViewColumnType.CheckBox); 

    MVCxGridViewColumn col_listType = new MVCxGridViewColumn("LocationListType"); 
    col_listType.Visible = false; 

    if (ViewBag.Id == "Online") 
    { 
     MVCxGridViewColumn col_online = new MVCxGridViewColumn("IsOnline", "Çevrimiçi", MVCxGridViewColumnType.Image); 
     col_online.SetDataItemTemplateContent(c => 
     { 
      ViewContext.Writer.Write("<img src='../../Content/Image/statusOnline.png'/>"); 
     }); 
     g.Columns.Add(col_online); 
    } 
}).Bind(Model).GetHtml() 
+1

Я думаю, вы должны показать какой-то код. – Zabavsky

+0

Я написал свои коды в качестве ответа. Потому что мои коды слишком длинны, как не подходят здесь :) –

+0

Никто не отвечает? –

ответ

1

Прежде всего, вы должны напишите window.gv_locations и затем убедитесь, что представление, содержащее скрипт js, см. эта сетка (представление должно содержать сетку и скрипт). Дайте мне ответ, если он сработает.

Смежные вопросы