コード例 #1
0
ファイル: ListView.cs プロジェクト: Flagwind/Zongsoft.Web
		protected override void RenderContent(HtmlTextWriter writer)
		{
			if(Utility.IsEmptyCollection(this.DataSource))
			{
				if(_emptyTemplate != null)
				{
					using(var literal = new Literal())
					{
						_emptyTemplate.InstantiateIn(literal);
						literal.RenderControl(writer);
					}
				}

				return;
			}

			IEnumerable dataItems = this.DataSource as IEnumerable;

			if(dataItems == null || dataItems.GetType() == typeof(string))
			{
				var item = new DataItemContainer<ListView>(this, this.DataSource, 0);
				this.RenderItem(writer, item);
			}
			else
			{
				int index = 0;

				foreach(var dataItem in dataItems)
				{
					FormExtension.PushDataItem(this.Page, dataItem, index);

					var item = new DataItemContainer<ListView>(this, dataItem, index++);
					this.RenderItem(writer, item);

					FormExtension.PopDataItem(this.Page);
				}
			}
		}
コード例 #2
0
ファイル: ListView.cs プロジェクト: Flagwind/Zongsoft.Web
		protected override void RenderEndTag(HtmlTextWriter writer)
		{
			if(_footerTemplate != null)
			{
				using(var literal = new Literal())
				{
					_footerTemplate.InstantiateIn(literal);
					literal.RenderControl(writer);
				}
			}

			if(this.RenderMode != ListRenderMode.None)
				writer.RenderEndTag();
		}
コード例 #3
0
ファイル: ListView.cs プロジェクト: Flagwind/Zongsoft.Web
		protected override void RenderBeginTag(HtmlTextWriter writer)
		{
			var tagName = string.Empty;

			switch(this.RenderMode)
			{
				case ListRenderMode.List:
					tagName = "dl";
					break;
				case ListRenderMode.BulletList:
					tagName = "ul";
					break;
				case ListRenderMode.OrderedList:
					tagName = "ol";
					break;
			}

			if(!string.IsNullOrWhiteSpace(tagName))
			{
				if(!string.IsNullOrWhiteSpace(this.ID))
					writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);

				if(!string.IsNullOrWhiteSpace(this.CssClass))
					writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass);

				writer.RenderBeginTag(tagName);
			}

			if(_headerTemplate != null)
			{
				using(var literal = new Literal())
				{
					_headerTemplate.InstantiateIn(literal);
					literal.RenderControl(writer);
				}
			}
		}
コード例 #4
0
ファイル: Image.cs プロジェクト: Flagwind/Zongsoft.Web
		public virtual Control ToHtmlControl()
		{
			Literal control = null;

			if(this.Dimension != Dimension.None)
				this.CssClass = ":" + this.Dimension.ToString();

			if(string.IsNullOrWhiteSpace(this.ImageUrl))
			{
				if(!string.IsNullOrWhiteSpace(this.Icon))
				{
					var css = Utility.ResolveCssClass(":" + this.Icon, () => this.CssClass);
					control = new Literal("i", "icon" + (string.IsNullOrWhiteSpace(css) ? "" : " " + css));
				}
			}
			else
			{
				control = new Literal("img", "image");
				control.SetAttributeValue("src", this.ImageUrl);

				if(!string.IsNullOrWhiteSpace(this.Placeholder))
					control.SetAttributeValue("alt", this.Placeholder);

				if(!Unit.IsEmpty(this.Width))
					control.SetAttributeValue("width", this.Width.ToString());

				if(!Unit.IsEmpty(this.Height))
					control.SetAttributeValue("height", this.Height.ToString());

				if(!string.IsNullOrWhiteSpace(this.CssClass))
					control.CssClass = this.CssClass;
			}

			if(control == null)
				return new Literal();

			if(string.IsNullOrWhiteSpace(this.NavigateUrl))
				return control;

			var container = new Literal("a", "image");
			container.SetAttributeValue("href", this.NavigateUrl);
			container.Controls.Add(control);
			return container;
		}
コード例 #5
0
ファイル: Utility.cs プロジェクト: Flagwind/Zongsoft.Web
		public static ICollection<Control> GenerateParts(ICollection<ViewPart> parts, Func<ViewPart, Control> containerThunk)
		{
			if(containerThunk == null)
				throw new ArgumentNullException();

			if(parts == null || parts.Count < 1)
				return null;

			var containers = new List<Control>();
			Control container = null;

			foreach(var part in parts)
			{
				if(containers.Count == 0 || (string.IsNullOrWhiteSpace(part.Text) && string.IsNullOrWhiteSpace(part.Icon)))
				{
					container = containerThunk(part);

					if(container != null)
						containers.Add(container);
				}

				Literal wrapper = null;
				var css = Utility.ResolveCssClass(part.Alignment == HorizontalAlignment.Right ? ":right floated" : string.Empty, () => part.CssClass);

				if(string.IsNullOrWhiteSpace(part.NavigateUrl))
					wrapper = new Literal("span", css);
				else
				{
					wrapper = new Literal("a", css);
					wrapper.SetAttributeValue("href", part.NavigateUrl);
				}

				if(!string.IsNullOrWhiteSpace(part.Style))
					wrapper.SetAttributeValue("style", part.Style);

				if(part.Properties.Count > 0)
				{
					foreach(var property in part.Properties)
					{
						wrapper.SetAttributeValue(property.Name, property.Value);
					}
				}

				container.Controls.Add(wrapper);

				if(part.IconAlignment == HorizontalAlignment.Left)
				{
					if(!string.IsNullOrWhiteSpace(part.Icon))
						(wrapper ?? container).Controls.Add(new Literal("i", part.Icon + " icon"));

					(wrapper ?? container).Controls.Add(new Literal()
					{
						Text = part.Text,
					});
				}
				else
				{
					(wrapper ?? container).Controls.Add(new Literal()
					{
						Text = part.Text,
					});

					if(!string.IsNullOrWhiteSpace(part.Icon))
						(wrapper ?? container).Controls.Add(new Literal("i", part.Icon + " icon"));
				}
			}

			return containers;
		}
コード例 #6
0
ファイル: ItemView.cs プロジェクト: Flagwind/Zongsoft.Web
		protected override void CreateHeaderContent(Control container)
		{
			if(this.Image != null)
			{
				if(string.IsNullOrWhiteSpace(this.Image.NavigateUrl))
				{
					var imageCss = "ui top aligned image";

					if(this.Image.Dimension != Dimension.None && !string.IsNullOrWhiteSpace(this.Image.ImageUrl))
						imageCss = "ui top aligned " + this.Image.Dimension.ToString() + " image";

					var literal = new Literal("div", imageCss);
					container.Controls.Add(literal);
					container = literal;
				}

				container.Controls.Add(this.Image.ToHtmlControl());
			}
		}