2008-11-27 Marek Habersack <mhabersack@novell.com>
authorMarek Habersack <grendel@twistedcode.net>
Thu, 27 Nov 2008 16:27:17 +0000 (16:27 -0000)
committerMarek Habersack <grendel@twistedcode.net>
Thu, 27 Nov 2008 16:27:17 +0000 (16:27 -0000)
* ListView.cs: fixes in DoUpdate and DoDelete - check must be made
that the requested item index is _smaller_ than the number of
keys, not _bigger_.
Enable using the lambda expression in CreateItemsInGroups - the
gmcs bug preventing that was fixed.

svn path=/trunk/mcs/; revision=120165

mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ChangeLog
mcs/class/System.Web.Extensions/System.Web.UI.WebControls/ListView.cs

index 86495a1914e36162274473daea3790c815a538e5..ee7fb399cfcfc86634b84d55c8ce9082743aefd2 100644 (file)
@@ -1,3 +1,11 @@
+2008-11-27  Marek Habersack  <mhabersack@novell.com>
+
+       * ListView.cs: fixes in DoUpdate and DoDelete - check must be made
+       that the requested item index is _smaller_ than the number of
+       keys, not _bigger_.
+       Enable using the lambda expression in CreateItemsInGroups - the
+       gmcs bug preventing that was fixed.
+
 2008-11-20  Marek Habersack  <mhabersack@novell.com>
 
        * ListView.cs: implemented the EditItem property.
index 784217d2f03335ef719599d43ee8b7b168fb17a3..d3e5277dfff35c4aacec31be9c222c45784e15d4 100644 (file)
@@ -1029,20 +1029,7 @@ namespace System.Web.UI.WebControls
                        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);
@@ -1051,6 +1038,10 @@ namespace System.Web.UI.WebControls
                                        _groupedItemsContainerItemCount++;
                                        needSeparator = false;
                                }
+                       };
+                       
+                       foreach (object item in dataSource) {
+                               groupStart ();
                                if (needSeparator && haveSeparatorTemplate)
                                        InsertSeparatorItem (currentGroup, itemPosInGroup++);
 
@@ -1061,30 +1052,12 @@ namespace System.Web.UI.WebControls
                                        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--;
@@ -1633,8 +1606,9 @@ namespace System.Web.UI.WebControls
 
                        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);
@@ -1683,7 +1657,7 @@ namespace System.Web.UI.WebControls
                        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);