Infragistics. Refresh igCombo after source was updated

Partimos de un proyecto ASP.NET MVC en el que tenemos en una vista un combo, que tras mostrarse en la página y por cualquier motivo, ha modificado su datasource y queremos que éste se refresque al hacer clic en un botón.

¿Cómo refrescamos el combo (en este caso es de Infragistics, pero el sistema sería similar para otros)?

En nuestra View tendríamos algo tal que así:

 

Este sería el script que se encarga de que cuando el usuario hace clic en el botón de “refresh”, la vista se comunique con el controlador, para que éste le devuelve el json del nuevo datasource.

 

<script>

$(function () {

$(“#actividad-refresh”)

.button()

.click(function (event) {

 

$.getJSON(“/EmpresaArea/Empresa/GetActividades”, function (returnData) {

$(“#IdActividad”).igCombo(“option”, “dataSource”, returnData);

});

});

});

</script>

 

Este sería el botón que refrescaría el datasource del combo:

<a
href=”#”
id=”actividad-refresh”><i
class=”icon-refresh”></i></a>

 

Este sería el combo, que se carga inicialmente con un datasource, que posteriormente se refrescará al hacer clic en el botón anterior.

 


@(Html.Infragistics().ComboFor(x => x.IdActividad ).Width(“100%”).DataSource( Model.Actividades )

 

.TextKey(“Nombre”).ValueKey(“Id”).DataBind().Render())

 

Y nuestro controlador:

 

[HttpGet]


public
string GetActividades()

{


var actividades =new
List<ComboItems>();

 


var lst = _repository.All<Actividad>();

 


foreach (var l in lst)

actividades.Add(new ComboItems { Id = l.id_Actividad, Nombre = l.Nombre });

 


var oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();


return oSerializer.Serialize(actividades);

}

 

Y nuestro ViewModel:

 

public
int? IdActividad { get; set; }

public
List<ComboItems> Actividades { get; set; }

 

public
class
ComboItems

{


public
string Nombre { get; set; }


public
int Id { get; set; }

 

}

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s