* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / DataList.cs
index 86bf0a674b7cba1b0123d6041d884a90378208af..39aa0b005f2d436b440fc2e318013697da4e71ae 100644 (file)
@@ -310,7 +310,12 @@ namespace System.Web.UI.WebControls {
                                object o = ViewState ["RepeatColumns"];
                                return (o == null) ? 0 : (int) o;
                        }
-                       set { ViewState ["RepeatColumns"] = value; }
+                       set { 
+                               if (value < 0)
+                                       throw new ArgumentOutOfRangeException ("value", "RepeatColumns value has to be 0 for 'not set' or > 0.");
+                               
+                               ViewState ["RepeatColumns"] = value; 
+                       }
                }
 
 #if ONLY_1_1
@@ -520,7 +525,7 @@ namespace System.Web.UI.WebControls {
                {
                        DoItem (i, type, d, databind);
                        if (SeparatorTemplate != null)
-                               DoItem (i - 1, ListItemType.Separator, null, databind);
+                               DoItem (i, ListItemType.Separator, null, databind);
 
                }
 
@@ -533,6 +538,11 @@ namespace System.Web.UI.WebControls {
 
                        if (useDataSource) {
                                idx = 0;
+#if NET_2_0
+                               if (IsBoundUsingDataSourceID)
+                                       ds = GetData();
+                               else
+#endif
                                ds = DataSourceResolver.ResolveDataSource (DataSource, DataMember);
                                keys = DataKeysArray;
                                keys.Clear ();
@@ -592,7 +602,9 @@ namespace System.Web.UI.WebControls {
                        // not kept (directly) in the DataList ViewState
                        return new TableStyle ();
 #else
-                       return new TableStyle (ViewState);
+                       TableStyle tableStyle = new TableStyle (ViewState);
+                       tableStyle.CellSpacing = 0;
+                       return tableStyle;
 #endif
                }
 
@@ -620,10 +632,10 @@ namespace System.Web.UI.WebControls {
                        case ListItemType.SelectedItem:
                        case ListItemType.EditItem:
                                int index = item.ItemIndex;
-                               if (SelectedIndex == index)
-                                       t = SelectedItemTemplate;
-                               else if (EditItemIndex == index)
+                               if ((EditItemIndex == index) && (EditItemTemplate != null))
                                        t = EditItemTemplate;
+                               else if ((SelectedIndex == index) && (SelectedItemTemplate != null))
+                                       t = SelectedItemTemplate;
                                else if (((index & 1) == 0) || (alternatingItemTemplate == null))
                                        t = ItemTemplate;
                                else
@@ -638,7 +650,11 @@ namespace System.Web.UI.WebControls {
                protected override void LoadViewState (object savedState)
                {
                        object[] state = (object[]) savedState;
+#if NET_2_0
+                       base.LoadViewState (state [8]);
+#else
                        base.LoadViewState (state [0]);
+#endif
                        if (state [1] != null)
                                ItemStyle.LoadViewState (state [1]);
                        if (state [2] != null)
@@ -769,7 +785,7 @@ namespace System.Web.UI.WebControls {
                                case ListItemType.AlternatingItem:
                                        if (alt == null) {
                                                if (alternatingItemStyle != null) {
-                                                       alt = new Style ();
+                                                       alt = new TableItemStyle ();
                                                        alt.CopyFrom (itemStyle);
                                                        alt.CopyFrom (alternatingItemStyle);
                                                } else {
@@ -781,8 +797,13 @@ namespace System.Web.UI.WebControls {
                                        ApplyControlStyle (item, alt);
                                        break;
                                case ListItemType.EditItem:
-                                       item.MergeStyle (editItemStyle);
-                                       ApplyControlStyle (item, editItemStyle);
+                                       if (editItemStyle != null) {
+                                               item.MergeStyle (editItemStyle);
+                                               ApplyControlStyle (item, editItemStyle);
+                                       } else {
+                                               item.MergeStyle (itemStyle);
+                                               ApplyControlStyle (item, itemStyle);
+                                       }
                                        break;
                                case ListItemType.Footer:
                                        if (!ShowFooter) {
@@ -814,7 +835,14 @@ namespace System.Web.UI.WebControls {
                                        }
                                        break;
                                case ListItemType.Separator:
-                                       ApplyControlStyle (item, separatorStyle);
+                                       if (separatorStyle != null) {
+                                               item.MergeStyle(separatorStyle);
+                                               ApplyControlStyle (item, separatorStyle);
+                                       }
+                                       else {
+                                               item.MergeStyle (itemStyle);
+                                               ApplyControlStyle (item, itemStyle);
+                                       }
                                        break;
                                }
                        }
@@ -827,10 +855,16 @@ namespace System.Web.UI.WebControls {
 #endif         
                override void RenderContents (HtmlTextWriter writer)
                {
+                       if (Items.Count == 0)
+                               return;                 
+
                        RepeatInfo ri = new RepeatInfo ();
                        ri.RepeatColumns = RepeatColumns;
                        ri.RepeatDirection = RepeatDirection;
                        ri.RepeatLayout = RepeatLayout;
+                       ri.CaptionAlign = CaptionAlign;
+                       ri.Caption = Caption;
+                       ri.UseAccessibleHeader = UseAccessibleHeader;
 /*
 // debugging stuff that I prefer to keep for a while
 Console.WriteLine ("RepeatColumns {0}", ri.RepeatColumns);