1: using System;
2: using System.Collections.Generic;
3: using System.ComponentModel;
4: using System.Linq;
5: using System.Text;
6: using System.Web;
7: using System.Web.UI;
8: using System.Web.UI.WebControls;
9:
10: namespace Controls.ImageListBox
11: { 12: [DefaultProperty("Text")] 13: public class ImageListItem
14: { 15: private string _Text;
16: private string _Value;
17: private bool _Selected;
18:
19: public string Text
20: { 21: get{return _Text;} 22: set{_Text=value;} 23: }
24:
25: public string Value
26: { 27: get{return _Value;} 28: set{_Value=value;} 29: }
30:
31: public bool Selected
32: { 33: get{return _Selected;} 34: set{_Selected=value;} 35: }
36: }
37:
38: [ParseChildren(true)]
39: [PersistChildren(false)]
40: [ToolboxData("<{0}:ImageListBox runat=server></{0}:ImageListBox>")] 41: public class ImageListBox : WebControl
42: { 43: private List<ImageListItem> _Items=new List<ImageListItem>();
44:
45: [NotifyParentProperty(true)]
46: [PersistenceMode(PersistenceMode.InnerProperty)]
47: [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
48: public List<ImageListItem> Items
49: { 50: get{return _Items;} 51: }
52:
53: protected override void RenderContents(HtmlTextWriter output)
54: { 55: StringBuilder OutputString = new StringBuilder();
56: OutputString.Append("<DIV style=\"overflow:scroll;overflow-y:scroll;\" class=\"ImageListBox\"><TABLE width=\"100%\" class=\"ImageListBoxTable\"><TBODY class=\"ImageListBoxBody\">"); 57: string SelectedValue="";
58: string Seperator="";
59: foreach (ImageListItem Item in _Items)
60: { 61: OutputString.Append("<tr><td class=\""); 62: if (Item.Selected)
63: { 64: OutputString.Append("ImageListItemSelected"); 65: }
66: else
67: { 68: OutputString.Append("ImageListItem"); 69: }
70: OutputString.Append("\" onclick=\"Selected("+Item.Value+",this);\">"); 71: OutputString.Append(Item.Text+"</td></tr>");
72: if(Item.Selected)
73: { 74: SelectedValue+=Seperator+Item.Value;
75: Seperator=";";
76: }
77: }
78: OutputString.Append("</TBODY></TABLE></DIV>"); 79: OutputString.Append("<input type=\"hidden\" id=\"ImageListItemSelectedValue\" name=\"ImageListItemSelectedValue\" value=\"" + SelectedValue + "\" />"); 80: output.Write(OutputString.ToString());
81: }
82:
83: protected override void OnPreRender(EventArgs e)
84: { 85: string ScriptUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "Controls.ImageListBox.ImageListBox.js");
86: Page.ClientScript.RegisterClientScriptInclude("ImageListBox", ScriptUrl); 87: base.OnPreRender(e);
88: }
89:
90: protected override void OnInit(EventArgs e)
91: { 92: if (Page.IsPostBack)
93: { 94: string []Splitter={";"}; 95: string[] SelectedValues = null;
96: if (Page.Request.HttpMethod.Equals("get", StringComparison.CurrentCultureIgnoreCase)) 97: { 98: SelectedValues = Page.Request.QueryString["ImageListItemSelectedValue"].Split(Splitter, StringSplitOptions.RemoveEmptyEntries);
99: }
100: else if (Page.Request.HttpMethod.Equals("post", StringComparison.CurrentCultureIgnoreCase)) 101: { 102: SelectedValues = Page.Request.Form["ImageListItemSelectedValue"].Split(Splitter, StringSplitOptions.RemoveEmptyEntries);
103: }
104: else
105: { 106: base.OnInit(e);
107: return;
108: }
109: foreach (ImageListItem Item in _Items)
110: { 111: Item.Selected = false;
112: foreach (string SelectedValue in SelectedValues)
113: { 114: if (Page.Request.HttpMethod.Equals("get", StringComparison.CurrentCultureIgnoreCase) && Item.Value.Equals(SelectedValue)) 115: { 116: Item.Selected = true;
117: break;
118: }
119: else if (Page.Request.HttpMethod.Equals("post", StringComparison.CurrentCultureIgnoreCase) && Item.Value.Equals(SelectedValue)) 120: { 121: Item.Selected = true;
122: break;
123: }
124: }
125: }
126: }
127: base.OnInit(e);
128: }
129: }
130: }