int startIndex = dataSource.StartRowIndex;
int dataCount = dataSource.Count;
int numberOfGroups = (dataCount / groupItemCount) + (dataCount % groupItemCount) - 1;
- // This is disabled for now, until a bug in gmcs/JIT is fixed
-// GroupStart groupStart = () => {
-// if (groupItemCounter <= 0) {
-// groupItemCounter = groupItemCount;
-// currentGroup = StartNewGroup (numberOfGroups >= 1, ref gpos, ref firstItemIndexInGroup);
-// numberOfGroups--;
-// itemPosInGroup = firstItemIndexInGroup;
-// _groupedItemsContainerItemCount++;
-// needSeparator = false;
-// }
-// };
-
- foreach (object item in dataSource) {
- // groupStart ();
+ GroupStart groupStart = () => {
if (groupItemCounter <= 0) {
groupItemCounter = groupItemCount;
currentGroup = StartNewGroup (numberOfGroups >= 1, ref gpos, ref firstItemIndexInGroup);
_groupedItemsContainerItemCount++;
needSeparator = false;
}
+ };
+
+ foreach (object item in dataSource) {
+ groupStart ();
if (needSeparator && haveSeparatorTemplate)
InsertSeparatorItem (currentGroup, itemPosInGroup++);
needSeparator = true;
}
- //groupStart ();
- if (groupItemCounter <= 0) {
- groupItemCounter = groupItemCount;
- currentGroup = StartNewGroup (numberOfGroups >= 1, ref gpos, ref firstItemIndexInGroup);
- numberOfGroups--;
- itemPosInGroup = firstItemIndexInGroup;
- _groupedItemsContainerItemCount++;
- needSeparator = false;
- }
-
+ groupStart ();
if (insertPosition == InsertItemPosition.LastItem) {
if (needSeparator && haveSeparatorTemplate)
InsertSeparatorItem (currentGroup, itemPosInGroup++);
- //groupStart ();
- if (groupItemCounter <= 0) {
- groupItemCounter = groupItemCount;
- currentGroup = StartNewGroup (numberOfGroups >= 1, ref gpos, ref firstItemIndexInGroup);
- numberOfGroups--;
- itemPosInGroup = firstItemIndexInGroup;
- _groupedItemsContainerItemCount++;
- needSeparator = false;
- }
-
+ groupStart ();
lvi = CreateInsertItem ();
AddControlToContainer (lvi, currentGroup, itemPosInGroup++);
groupItemCounter--;
if (usingDataSourceID) {
DataKeyArray dka = DataKeys;
- if (index > dka.Count)
+ if (index < dka.Count)
dka [index].Values.CopyTo (deletingArgs.Keys);
+
ExtractItemValues (deletingArgs.Values, item, true);
}
OnItemDeleting (deletingArgs);
var updatingArgs = new ListViewUpdateEventArgs (index);
if (usingDataSourceID) {
DataKeyArray dka = DataKeys;
- if (index > dka.Count)
+ if (index < dka.Count)
dka [index].Values.CopyTo (updatingArgs.Keys);
CurrentEditOldValues.CopyTo (updatingArgs.OldValues);