Asked by:
Best Practices for Editing WinJs.UI.ListView item groupings

Question
-
I have a WinJS.UI.ListView with groupings in gridview mode that is backed by a WinJS.Binding.List as the data source. Each item in the data source (dataList) has a "groupName" property that I'm using for grouping.
I'm using the following piece of code to change the category of one item in order to move it to another group:
newGroupName = "Week"; var x = dataList.getAt(0); x.groupName = newGroupName; dataList.setAt(0, x);
However, whenever I do that, I get the following exception:
Exception is about to be caught by JavaScript library code at line 20908, column 5 in ms-appx://microsoft.winjs.1.0/js/ui.js
0x800a138f - JavaScript runtime error: Unable to get property 'id' of undefined or null reference
Which seems to be coming from the following method:
function setFlow(from, to) { WinJS.UI._setAttribute(from, "aria-flowto", to.id); WinJS.UI._setAttribute(to, "x-ms-aria-flowfrom", from.id); }
What am I doing wrong? What is the "right" way for me to change the grouping of an item in my list view?
Thanks!
Taylor
- Edited by Taylor Lehman Sunday, January 13, 2013 5:51 AM
Sunday, January 13, 2013 4:02 AM
All replies
-
Hi,
Based on the code above, I think the code has some problem. Could you post more related code? So I will reproduce your scenario on my side.
Roy
MSDN Community Support | Feedback to us
Develop and promote your apps in Windows Store
Please remember to mark the replies as answers if they help and unmark them if they provide no help.Tuesday, January 15, 2013 7:28 AM -
Hello,
I have encountered the same error "Unable to get property 'id' of undefined or null reference" in the setFlow function in ui.js. After several test and debugging the error occurs because I used the createGrouped function with a groupSorter function like this :
var list = new WinJS.Binding.List(result); var groupedList = list.createGrouped(getGroupKey, getGroupData, compareGroups);
And the error was located in my groupSorter function named compareGroups.
Maybe, your problem is pretty the same as me. But as Song Tian said, we need more information on your code to reproduce and localize the problem.
For more information about createGrouped function, you can refer to this page : List.createGrouped method (Windows)
Rock'n'Code
- Edited by guillaumebrout Tuesday, January 15, 2013 9:31 AM
Tuesday, January 15, 2013 9:29 AM -
THANK YOU!!!! You saved me a ton of time.
I found my problem right in the groupSorter function too. Step through, and make sure that you're following the rules in that link, specifically:
groupSorter
Type: Function
A function that accepts two arguments. The function is called with pairs of group keys found in the list. It must return one of the following numeric values: negative if the first argument is less than the second (sorted before), zero if the two arguments are equivalent, positive if the first argument is greater than the second (sorted after).
Make sure that whatever is being returned is a) a numeric, b) a numeric which makes sense given the context above.- Edited by mdhar Thursday, January 9, 2014 3:34 AM
Thursday, January 9, 2014 3:33 AM