Cómo añadir el ID a una fila en Infragistics igGrid con ASP.NET MVC

Al añadir una fila en la rejilla, el igGrid tiene formas de poder calcular el nuevo Id de la fila mediante propiedades y eventos en jQuery, pero cuando este Id, viene dado desde el controlador, hay que hacer un pequeño “invento”.

Es sencillo, pero hay que saberlo. El controlador debe pasarle a la vista los nuevos Ids mediante Json, y ya en la vista, un evento del igGrid se encargará de actualizar el Id de la nueva fila.

Sería algo parecido a:

CONTROLADOR:

public ActionResult SaveProducts()

 

{

 

GridModel m = new GridModel();

 

List<Transaction<Product>> transactions = m.LoadTransactions<Product>(HttpContext.Request.Form[“ig_transactions”]);

 

List<Ids> ids = new List<Ids>();

 

int newId = 0;

 

foreach (Transaction<Product> t in transactions)

 

{

 

if (t.type == “newrow”)

 

{

 

// repository Add mehtod returns the new id generated from the underlying data source

 

newId = productsRepository.Add(t.row);

 

ids.Add(new Ids() { OldId = t.row.ProductID, NewId = newId });

 

}

 

}

 

JsonResult result = new JsonResult();

 

Dictionary<string, object> response = new Dictionary<string, object>();

 

response.Add(“Success”, true);

 

response.Add(“ids”, ids);

 

result.Data = response;

 

return result;

 

}

========================

VISTA:

=======================

$.ig.loader(function () {

 

$(“#grid1”).data(“igGrid”).dataSource._addChangesSuccessHandler(function (data) {

 

var i;

 

for (i = 0; i < data.ids.length; i++) {

 

$(“#grid1”).igGridUpdating(“setCellValue”, data.ids[i].OldId, “ProductID”, data.ids[i].NewId);

$(“#grid1 > tbody > tr[data-id='” + data.ids[i].OldId + “‘]”).attr(“data-id”, data.ids[i].NewId);

}

 

$(“#grid1”).data(“igGrid”).dataSource.commit();

 

$(“#grid1”).data(“igGrid”).dataSource.allTransactions().length = 0;

});

 

});

 

 

Fuente: http://www.infragistics.com/community/forums/p/84192/420302.aspx#420302

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