You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by hu...@apache.org on 2005/11/15 19:00:11 UTC

svn commit: r344402 - in /struts/sandbox/trunk/overdrive/Nexus: Core/IKeyValueList.cs Core/KeyValueList.cs Web/GridControl.ascx.cs

Author: husted
Date: Tue Nov 15 09:59:59 2005
New Revision: 344402

URL: http://svn.apache.org/viewcvs?rev=344402&view=rev
Log:
OVR-21
* Extend KeyValue list to provide a value lookup for a key
* Add a KeyValueTemplate to map a  key to its value.

Modified:
    struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs
    struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs
    struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs

Modified: struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs?rev=344402&r1=344401&r2=344402&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/IKeyValueList.cs Tue Nov 15 09:59:59 2005
@@ -7,5 +7,6 @@
 	/// </summary>
 	public interface IKeyValueList : IList
 	{
+		string ValueFor(string key); 
 	}
 }

Modified: struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs?rev=344402&r1=344401&r2=344402&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Core/KeyValueList.cs Tue Nov 15 09:59:59 2005
@@ -1,3 +1,4 @@
+using System;
 using System.Collections;
 
 namespace Nexus.Core
@@ -28,5 +29,14 @@
 			}
 		}
 
+		public string ValueFor(string key)
+		{
+			if ((key==null) || (key.Equals(String.Empty))) return key;
+			foreach (IKeyValue kv in this)
+			{
+				if (key.Equals(kv.Key)) return kv.Value as string;
+			}
+			return null;
+		}
 	}
 }

Modified: struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs
URL: http://svn.apache.org/viewcvs/struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs?rev=344402&r1=344401&r2=344402&view=diff
==============================================================================
--- struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs (original)
+++ struts/sandbox/trunk/overdrive/Nexus/Web/GridControl.ascx.cs Tue Nov 15 09:59:59 2005
@@ -1009,7 +1009,7 @@
 
 			private string _DataField;
 
-			private void LiteralTemplate_DataBinding(object sender, EventArgs e)
+			private void OnDataBinding(object sender, EventArgs e)
 			{
 				Literal lc;
 				lc = (Literal) sender;
@@ -1021,7 +1021,7 @@
 			{
 				Literal lc = new Literal();
 				lc.ID = _DataField;
-				lc.DataBinding += new EventHandler(LiteralTemplate_DataBinding);
+				lc.DataBinding += new EventHandler(OnDataBinding);
 				container.Controls.Add(lc);
 			}
 
@@ -1031,23 +1031,77 @@
 			}
 		}
 		
+		public class KeyValueTemplate : ITemplate
+		{
+
+			private string _DataField;
+			private IKeyValueList _List;
+
+			private void OnDataBinding(object sender, EventArgs e)
+			{
+				Literal lc;
+				lc = (Literal) sender;
+				DataGridItem container = (DataGridItem) lc.NamingContainer;
+				string key = DataBinder.Eval(container.DataItem, _DataField) as string;
+				lc.Text = _List.ValueFor(key);
+			}
+
+			public void InstantiateIn(Control container)
+			{
+				Literal lc = new Literal();
+				lc.ID = _DataField;
+				lc.DataBinding += new EventHandler(OnDataBinding);
+				container.Controls.Add(lc);
+			}
+
+			public KeyValueTemplate (string dataField, IKeyValueList list)
+			{				
+				_DataField = dataField;				
+				_List = list;
+			}
+		}
+
 		public class DropDownListTemplate : ITemplate
 		{
 			
+			private string _DataField;
 			private DropDownList _List;
 
+			private void OnDataBinding(object sender, EventArgs e)
+			{
+				DropDownList _list;
+				_list = (DropDownList) sender;
+				DataGridItem container = (DataGridItem) _list.NamingContainer;
+				object key = DataBinder.Eval(container.DataItem, _DataField);
+				string item = key.ToString();
+				_list.SelectedValue = item;
+			}
+
 			public void InstantiateIn(Control container)
 			{
 				container.Controls.Add(_List);
+				_List.DataBinding += new EventHandler(OnDataBinding);
 			}
 
 			public DropDownListTemplate(string id, object dataSource)
 			{
+				_DataField = id;
 				_List = new DropDownList();
 				_List.ID = id;
 				_List.DataSource = dataSource;
 				_List.DataBind();
 			}
+
+			public DropDownListTemplate(string id, IKeyValueList list)
+			{
+				_DataField = id;
+				_List = new DropDownList();
+				_List.ID = id;
+				_List.DataSource = list;
+				_List.DataTextField = "key";
+				_List.DataValueField = "value";
+				_List.DataBind();
+			}		
 		}
 				
 		#endregion



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org