Hi there, I've updated my project from IgniteUI 14.1 to 16.1, and JQuery from 1.7.2 to 1.9.1.
In my grid, on the second level, I use the "iggridupdatingeditcellstarted " event to check if the new value is negative, and handle that, as such:
// Get current Row
var row = ui.owner.grid.dataSource.dataView()[ui.owner._rowIndex];
// Calculate new balance
var balance = row.transfer_size_qty - ui.value
// If it will go negative, set to intransit_size_qty
if (balance < 0)
{ ui.value = row.intransit_size_qty; }
In 14.1, this code worked but since updating to 16.1 I get "JavaScript runtime error: Unable to get property 'transfer_size_qty' of undefined or null reference"
In Intellisense, I get "row.intransit_size_qty", but not "row.transfer_size_qty" coming up, yet they both seem to be correctly defined in the grid and the model.
If I add: alert(row.transfer_size_qty) after " var row = ..." its then recognized, but if I remove it, its gone again.
Any ideas what could be causing this?
Thanks Deon
Hello Deon,
Thank you for the update. I have created a sample and I have been unable to reproduce this behavior. It works for me without issue. I am attaching my sample, note that I have removed the Infragistics JavaScript and CSS files due to file size limitations of attaching to the forums. Please run my sample and let me know what behavior you see. Also please send me an isolated sample that reproduces the issue for you so I can look further into this matter and see what may be causing this behavior for you.
Hi Mike,
I am loading ithe scripts at the tope of the view like this:
@(Html.Infragistics().Loader()
.ScriptPath(Url.Content("~/Infragistics/js/"))
.CssPath(Url.Content("~/Infragistics/css/"))
.Theme("infragistics2012")
.Render()
)
My functions in the scripts section are:
$("#grdReceipts").bind("iggridupdatingeditcellstarted", function (event, ui) {
if (!ui.editor) {
return;
}
if (ui.columnKey === 'ct_size_scale_desc') {
ui.editor.igEditor('option', 'readOnly', true);
$("#saveChanges").igButton("disable");
$('#saveChanges').val('Not Ready');
//var row = ui.owner.grid.dataSource.dataView()[ui.owner._rowIndex];
var text = ui.owner.grid.getCellValue(ui.rowID, "grv_qty");
if (text === null) {
ui.owner.updateRow(ui.rowID, { 'grv_qty': ui.owner.grid.getCellValue(ui.rowID, "intransit_size_qty") });
// ui.owner.setCellValue(ui.rowID, "grv_qty", row.intransit_size_qty);
// ui.owner._notifyChanged();
});
$("#grdReceipts").bind("iggridupdatingeditcellending", function (event, ui) {
var balance = ui.owner.grid.getCellValue(ui.rowID, "transfer_size_qty") - ui.value
if (balance < 0) {
ui.value = ui.owner.grid.getCellValue(ui.rowID, "intransit_size_qty");
if (ui.value < 0) {
ui.value = 0;
$("#saveChanges").igButton("option", "disabled", false);
$('#saveChanges').val('Save Changes');
var parentTR = ui.owner.grid.element.closest("tr").prev();
var parentRowId = $(parentTR).attr('data-id');
var text = $("#grdReceipts").igGrid("getCellValue", parentRowId, "intransit_qty");
$("#grdReceipts").igGridUpdating("setCellValue", parentRowId, "intransit_qty", text, parentTR);
This is all local i.e. I am debugging, and my DB is on my machine. There do not appear to be any other errors other than the similar error as describe in the link:Uncaught Error: cannot call methods on igEditorFilter prior to initialization; attempted to call method 'SetFocus'
Regards
Deon
Thank you for the update. I have some follow up questions concerning this matter:
What order are you loading the scripts?Are you using the loader or loading manually?Do you get any other error in the console?What does your network traffic look like?Do you have an isolated sample that reproduces this behavior?
Thanks for your response. This did resolve the original error.
However, I am now getting the error as described in this link: https://es.infragistics.com/community/forums/f/ignite-ui-for-javascript/87874/cannot-update-a-cell-after-while-updating-other-cell---editing-grid.
Calling the statement you provides causes that error, and the grid no longer responds - I cannot collapse/expand rows, or click in any more cells. if I remove that line of code, the grid behaves as it should.
Any ideas on how to resolve this?
Thank you for contacting Infragistics!
I have done looking into this matter and it seem like ui.owner._rowIndex does not exist anymore so you are unable to use it. Note it is not recommend to use internal methods/members (marked by a leading “_”) as they could possibly change between versions. Instead you would want to use the public methods/members. To get the cell value for comparing/using I would instead recommend using the getCellValue method:
var cellValue = $("#grid1").igGrid("getCellValue", ui.rowID, “ProductQty”);
http://www.igniteui.com/help/api/2016.1/ui.iggrid#methods:getCellValue