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: }