Prechádzať zdrojové kódy

2005-04-15 Lluis Sanchez Gual <[email protected]>

	* DetailsView.cs: Added some null checks.
	* TemplateField.cs: Implemented support for two-way bindings.


svn path=/trunk/mcs/; revision=43074
Lluis Sanchez 21 rokov pred
rodič
commit
db92b94879

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

@@ -1,3 +1,8 @@
+2005-04-15  Lluis Sanchez Gual <[email protected]>
+
+	* DetailsView.cs: Added some null checks.
+	* TemplateField.cs: Implemented support for two-way bindings.
+
 2005-04-14  Lluis Sanchez Gual <[email protected]>
 
 	* DetailsView.cs: Implemented support for Insert operation. 

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

@@ -1706,7 +1706,7 @@ namespace System.Web.UI.WebControls
 				
 				for (int n=0; n<row.Cells.Count; n++) {
 					DataControlFieldCell fcell = row.Cells[n] as DataControlFieldCell;
-					if (fcell != null) {
+					if (fcell != null && fcell.ContainingField != null) {
 						if (n == 0 && fcell.ContainingField.ShowHeader) {
 							if (fieldHeaderStyle != null)
 								fieldHeaderStyle.AddAttributesToRender (writer, fcell);
@@ -1715,7 +1715,7 @@ namespace System.Web.UI.WebControls
 						else
 							fcell.ContainingField.ItemStyle.AddAttributesToRender (writer, fcell);
 					}
-					fcell.Render (writer);
+					row.Cells[n].Render (writer);
 				}
 				row.RenderEndTag (writer);
 			}

+ 16 - 2
mcs/class/System.Web/System.Web.UI.WebControls/TemplateField.cs

@@ -29,6 +29,7 @@
 //
 
 #if NET_2_0
+using System.Collections;
 using System.Collections.Specialized;
 using System.Web.UI;
 using System.Security.Permissions;
@@ -130,7 +131,7 @@ namespace System.Web.UI.WebControls
 				}
 			} else {
 				if ((rowState & DataControlRowState.Insert) != 0) {
-					if (headerTemplate != null) {
+					if (insertItemTemplate != null) {
 						insertItemTemplate.InstantiateIn (cell);
 						return;
 					}
@@ -154,10 +155,23 @@ namespace System.Web.UI.WebControls
 			base.InitializeCell (cell, cellType, rowState, rowIndex);
 		}
 		
-		[MonoTODO]
 		public override void ExtractValuesFromCell (IOrderedDictionary dictionary,
 			DataControlFieldCell cell, DataControlRowState rowState, bool includeReadOnly)
 		{
+			IBindableTemplate bt;
+			
+			if ((rowState & DataControlRowState.Insert) != 0)
+				bt = insertItemTemplate as IBindableTemplate; 
+			else if ((rowState & DataControlRowState.Edit) != 0)
+				bt = editItemTemplate as IBindableTemplate;
+			else
+				return;
+			
+			if (bt != null) {
+				IOrderedDictionary values = bt.ExtractValues (cell);
+				foreach (DictionaryEntry e in values)
+					dictionary [e.Key] = e.Value; 
+			}
 		}
 		
 		public override void ValidateSupportsCallback ()