We have an application in which users can select multiple rows, and the screen displays a sum of values from the selected rows. I figured the best way to do this is to put a code in the grid's onRowClick event that would use getSelectedRows() to get a list of all rows that are selected, then get the value from each row returned in the array to get the sum of the values. The problem is it seems like the the onRowClick event is firing before the row selection property is being set. So when the code executes in onRowClick, the result of getSelectedRow() is the selected rows before I make the selection, and not after.
Is there a better way to determine what rows are selected when a user makes a selection?
onRowClick and getSelectedRows
-
- New User
- Posts: 14
- Joined: Fri Dec 05, 2014 1:17 pm
- First Name: Nick
- Last Name: Deppe
- Company Name: Victaulic
- Phone: 6109233257
- Address 1: 4901 Kesslersville Road
- City: Easton
- State / Province: Pennsylvania
- Zip / Postal Code: 18040
- Country: United States
- Contact:
-
- Experienced User
- Posts: 2711
- Joined: Wed Aug 01, 2012 8:58 am
- First Name: Scott
- Last Name: Klement
- Company Name: Profound Logic
- City: Milwaukee
- State / Province: Wisconsin
Re: onRowClick and getSelectedRows
I've never done this, so not sure what to tell you.
I have done something similar with the grid's filter feature. There, the user can select rows by changing the filter string, and the grid has an "onfilterchange" event that runs whenever the filter changes, this way you can update the totals whenever it changes, which is really convenient. Would that work for you?
I haven't done this with row selection, exactly. I've done similar-ish things by having the user click a button to get the results (in my case, it wasn't a total, but it could've been) or by using the right-click (context) menu to do things based on row selection. These also worked fine. So you could consider these alternatives as well.
But, never tried to do it when the selection is clicked.
I have done something similar with the grid's filter feature. There, the user can select rows by changing the filter string, and the grid has an "onfilterchange" event that runs whenever the filter changes, this way you can update the totals whenever it changes, which is really convenient. Would that work for you?
I haven't done this with row selection, exactly. I've done similar-ish things by having the user click a button to get the results (in my case, it wasn't a total, but it could've been) or by using the right-click (context) menu to do things based on row selection. These also worked fine. So you could consider these alternatives as well.
But, never tried to do it when the selection is clicked.
- Megan
- Profound Logic Staff Member
- Posts: 90
- Joined: Mon Sep 11, 2017 12:15 pm
- First Name: Megan
- Last Name: Bond
- Company Name: Profound Logic
- Phone: 5623227473
- State / Province: California
- Zip / Postal Code: 92692
- Country: United States
- Contact:
Re: onRowClick and getSelectedRows
Hello Nick,
I have looked into this further and have a solution that may work for you. I used the following code on the onrowclick event of the grid:
The timeout function gives the program a chance to finish updating the selected rows list, which is then available to be used to get the values from the cells and add them up. You may need to change the time value of the timeout function in order for the selected rows list to have enough time to update. I used '+=' to add up the values in the for loop. I then applied the value property with the new calculated value.
Result: I hope this helps!
I have looked into this further and have a solution that may work for you. I used the following code on the onrowclick event of the grid:
Code: Select all
setTimeout(function() {
var myGrid = getObj("Grid1");
var myArray = myGrid.grid.getSelectedRows();
var totalInts = 0;
var totalDecs = 0;
var totalMnys = 0;
for (var i=0; i<myArray.length; i++) {
var rrn = myArray[i];
totalInts += parseInt(get("Ints." + rrn),10);
totalDecs += parseFloat(get("Decs." + rrn));
totalMnys += parseFloat(get("Monies." + rrn));
}
applyProperty("TotalInts", "value", totalInts);
applyProperty("TotalDecs", "value", totalDecs.toFixed(5));
applyProperty("TotalMnys", "value", totalMnys.toFixed(2));
}, 10);
Result: I hope this helps!
-
- New User
- Posts: 14
- Joined: Fri Dec 05, 2014 1:17 pm
- First Name: Nick
- Last Name: Deppe
- Company Name: Victaulic
- Phone: 6109233257
- Address 1: 4901 Kesslersville Road
- City: Easton
- State / Province: Pennsylvania
- Zip / Postal Code: 18040
- Country: United States
- Contact:
Re: onRowClick and getSelectedRows
Hi Megan,
This solution worked for me, although I'm not too fond of using a timeout in a situation like this. I'm just not sure if there is a guarantee of the row selection property being updated within 10 milliseconds of the onRowClick event. This solution does seem to be working for me though and I haven't been able to break it.
Perhaps in the future a new event can be added when a user makes a selection on a grid, like onRowSelected for example. The event would fire after the selection property is set on the row. Does that make sense? I could submit an RFE for this.
This solution worked for me, although I'm not too fond of using a timeout in a situation like this. I'm just not sure if there is a guarantee of the row selection property being updated within 10 milliseconds of the onRowClick event. This solution does seem to be working for me though and I haven't been able to break it.
Perhaps in the future a new event can be added when a user makes a selection on a grid, like onRowSelected for example. The event would fire after the selection property is set on the row. Does that make sense? I could submit an RFE for this.
- Megan
- Profound Logic Staff Member
- Posts: 90
- Joined: Mon Sep 11, 2017 12:15 pm
- First Name: Megan
- Last Name: Bond
- Company Name: Profound Logic
- Phone: 5623227473
- State / Province: California
- Zip / Postal Code: 92692
- Country: United States
- Contact:
Re: onRowClick and getSelectedRows
Hello Nick,
I'm glad to hear my solution worked for you! I also completely understand your desire to have a onRowSelected event. If you would like this event submitted as a feature request, could you please send us an email at support@profoundlogic.com with a general description of how you would like the onRowSelected function (i.e. row number should be passed to the event) and how important this feature is for you. This information will help our developers in assessing the necessity of the feature and the urgency of the feature to be implemented if accepted.
Thanks,
I'm glad to hear my solution worked for you! I also completely understand your desire to have a onRowSelected event. If you would like this event submitted as a feature request, could you please send us an email at support@profoundlogic.com with a general description of how you would like the onRowSelected function (i.e. row number should be passed to the event) and how important this feature is for you. This information will help our developers in assessing the necessity of the feature and the urgency of the feature to be implemented if accepted.
Thanks,
Who is online
Users browsing this forum: No registered users and 2 guests