2
0
Эх сурвалжийг харах

2002-06-19 Gonzalo Paniagua Javier <[email protected]>

	* RadioButtonList.cs: implemented IRepeatInfoUser.RenderItem.
	* RepeatInfo.cs: implemented DoHorizontalRendering.

svn path=/trunk/mcs/; revision=5334
Gonzalo Paniagua Javier 23 жил өмнө
parent
commit
0ece19ea9f

+ 5 - 0
mcs/class/System.Web/System.Web.UI.WebControls/ChangeLog

@@ -1,3 +1,8 @@
+2002-06-19  Gonzalo Paniagua Javier <[email protected]>
+
+	* RadioButtonList.cs: implemented IRepeatInfoUser.RenderItem.
+	* RepeatInfo.cs: implemented DoHorizontalRendering.
+
 2002-06-18  Gonzalo Paniagua Javier <[email protected]>
 
 	* WebControl.cs:

+ 20 - 4
mcs/class/System.Web/System.Web.UI.WebControls/RadioButtonList.cs

@@ -13,6 +13,7 @@
 
 using System;
 using System.Collections.Specialized;
+using System.Globalization;
 using System.Web;
 using System.Web.UI;
 
@@ -186,10 +187,25 @@ namespace System.Web.UI.WebControls
 			return null;
 		}
 
-		[MonoTODO("RadioButtonList_RenderItem")]
-		void IRepeatInfoUser.RenderItem(System.Web.UI.WebControls.ListItemType itemType, int repeatIndex, RepeatInfo repeatInfo, HtmlTextWriter writer)
-		{
-			throw new NotImplementedException();
+		void IRepeatInfoUser.RenderItem (System.Web.UI.WebControls.ListItemType itemType,
+						 int repeatIndex,
+						 RepeatInfo repeatInfo,
+						 HtmlTextWriter writer)
+		{
+			/* Create a new RadioButton as if it was defined in the page and render it */
+			RadioButton button = new RadioButton ();
+			button.GroupName = UniqueID;
+			button.TextAlign = TextAlign;
+			button.AutoPostBack = AutoPostBack;
+			button.ID = ClientID + "_" + repeatIndex.ToString (NumberFormatInfo.InvariantInfo);;
+			object view_state = ViewState ["TabIndex"];
+			if (view_state != null)
+				button.TabIndex = (short) view_state;
+			ListItem current = Items [repeatIndex];
+			button.Text = current.Text;
+			button.Attributes ["value"] = current.Value;
+			button.Checked = current.Selected;
+			button.RenderControl (writer);
 		}
 
 		bool IRepeatInfoUser.HasFooter

+ 107 - 2
mcs/class/System.Web/System.Web.UI.WebControls/RepeatInfo.cs

@@ -6,7 +6,7 @@
  * Maintainer: [email protected]
  * Contact: <[email protected]>, <[email protected]>
  * Implementation: yes
- * Status:  90%
+ * Status:  100%
  *
  * (C) Gaurav Vaish (2002)
  */
@@ -259,9 +259,114 @@ namespace System.Web.UI.WebControls
 			}
 		}
 
-		private void DoHorizontalRendering(HtmlTextWriter writer, IRepeatInfoUser user, Style controlStyle, WebControl baseControl)
+		private void DoHorizontalRendering (HtmlTextWriter writer,
+						    IRepeatInfoUser user,
+						    Style controlStyle,
+						    WebControl baseControl)
 		{
+			/* Based on DoVerticalRendering */
+			int total = user.RepeatedItemCount;
+			int colsCount = repeatColumns;
+			int rowsCount = 0;
+
+			if (colsCount == 0)
+				colsCount = total;
+			WebControl ctrl = null;
+			bool isTable = true;
+			bool hasSeps = user.HasSeparators;
+			if (!outerTableImp){
+				isTable = (RepeatLayout == RepeatLayout.Table);
+				ctrl = (isTable) ? new Table () : new WebControl (HtmlTextWriterTag.Span);
+				ctrl.ID = baseControl.ClientID;
+				ctrl.CopyBaseAttributes (baseControl);
+				ctrl.ApplyStyle (controlStyle);
+				ctrl.RenderBeginTag (writer);
+			}
+
+			Style itemStyle;
+			int colSpan = 0;
+			if (user.HasHeader){
+				if (isTable){
+					writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+					if (rowsCount != 1){
+						colSpan = rowsCount;
+						if (hasSeps)
+							colSpan += rowsCount;
+						writer.AddAttribute (HtmlTextWriterAttribute.Colspan,
+						     colSpan.ToString (NumberFormatInfo.InvariantInfo));
+					}
+					itemStyle = user.GetItemStyle (ListItemType.Header, -1);
+					if (itemStyle != null)
+						itemStyle.AddAttributesToRender (writer);
+					writer.RenderBeginTag (HtmlTextWriterTag.Td);
+				}
+
+				user.RenderItem (ListItemType.Header, -1, this, writer);
+				
+				if (isTable){
+					writer.RenderEndTag();
+					writer.RenderEndTag();
+				} else if (!outerTableImp)
+						writer.WriteFullBeginTag ("br");
+			}
 
+			for (int index = 0; index < total; index++){
+				if (isTable && index == 0)
+					writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+
+				if (isTable){
+					itemStyle = user.GetItemStyle (ListItemType.Item, index);
+					if (itemStyle != null)
+						itemStyle.AddAttributesToRender(writer);
+					writer.RenderBeginTag(HtmlTextWriterTag.Td);
+				}
+
+				user.RenderItem(ListItemType.Item, index, this, writer);
+				if (isTable)
+					writer.RenderEndTag ();
+
+				if (hasSeps && index != (total - 1)){
+					if (isTable){
+						itemStyle = user.GetItemStyle (ListItemType.Separator, index);
+						if (itemStyle != null)
+							itemStyle.AddAttributesToRender (writer);
+						writer.RenderBeginTag (HtmlTextWriterTag.Td);
+					}
+					user.RenderItem (ListItemType.Separator, index, this, writer);
+					if (isTable)
+						writer.RenderEndTag ();
+				}
+				rowsCount++;
+				if (rowsCount == total || index == (total - 1)) {
+					if (isTable)
+						writer.RenderEndTag ();
+					else if (rowsCount < total)
+						writer.WriteFullBeginTag ("br");
+					rowsCount = 0;
+				}
+			}
+
+			if (user.HasFooter){
+				if (isTable){
+					writer.RenderBeginTag (HtmlTextWriterTag.Tr);
+					if (colsCount != 1)
+						writer.AddAttribute (HtmlTextWriterAttribute.Colspan,
+							colSpan.ToString(NumberFormatInfo.InvariantInfo));
+
+					itemStyle = user.GetItemStyle (ListItemType.Footer, -1);
+					if(itemStyle != null)
+						itemStyle.AddAttributesToRender (writer);
+					writer.RenderBeginTag (HtmlTextWriterTag.Td);
+				}
+				user.RenderItem (ListItemType.Footer, -1, this, writer);
+				if (isTable){
+					writer.RenderEndTag ();
+					writer.RenderEndTag ();
+				}
+			}
+
+			if (ctrl != null)
+				ctrl.RenderEndTag(writer);
 		}
 	}
 }