2014-10-11 103 views
3

我需要在操作后刷新ajax成功函数中的DevExpress GridView。我正在使用gridName.Refresh()方法,但JavaScript正在抛出“udefined不是函数”错误。但是当我将这种方法写入Google Chrome控制台窗口时,它工作正常。问题是什么?另外我的javascript代码是在不同的JavaScript文件中,而不是在html代码中。DevExpress MVC GridView刷新

这是我的jQuery的AJAX代码,在分隔javascript文件

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 2014-10-11 13:22:18

+0

我写了我的代码作为答案。因为我的代码太长,不适合在这里:) – 2014-10-13 08:39:43

+0

没有人回答我? – 2014-10-16 10:55:25

回答

1

你应该首先写下window.gv_locations,然后确定一个包含js脚本的视图这个网格(视图应该包含网格和脚本)。如果有效,请给我回复。