2 * Namespace: System.Web.UI.WebControls
\r
3 * Class: HyperLinkColumn
\r
5 * Author: Gaurav Vaish
\r
6 * Maintainer: gvaish@iitk.ac.in
\r
7 * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>
\r
8 * Implementation: yes
\r
11 * (C) Gaurav Vaish (2002)
\r
15 using System.ComponentModel;
\r
17 using System.Web.UI;
\r
19 namespace System.Web.UI.WebControls
\r
21 public class HyperLinkColumn: DataGridColumn
\r
23 PropertyDescriptor textFieldDescriptor;
\r
24 PropertyDescriptor urlFieldDescriptor;
\r
26 public HyperLinkColumn(): base()
\r
30 public virtual string DataNavigateUrlField
\r
34 object o = ViewState["DataNavigateUrlField"];
\r
37 return String.Empty;
\r
41 ViewState["DataNavigateUrlField"] = value;
\r
45 public virtual string DataNavigateUrlFormatString
\r
49 object o = ViewState["DataNavigateUrlFormatString"];
\r
52 return String.Empty;
\r
56 ViewState["DataNavigateUrlFormatString"] = value;
\r
60 public virtual string DataTextField
\r
64 object o = ViewState["DataTextField"];
\r
67 return String.Empty;
\r
71 ViewState["DataTextField"] = value;
\r
75 public virtual string DataTextFormatString
\r
79 object o = ViewState["DataTextFormatString"];
\r
82 return String.Empty;
\r
86 ViewState["DataTextFormatString"] = value;
\r
90 public virtual string NavigateUrl
\r
94 object o = ViewState["NavigateUrl"];
\r
97 return String.Empty;
\r
101 ViewState["NavigateUrl"] = value;
\r
105 public virtual string Target
\r
109 object o = ViewState["Target"];
\r
112 return String.Empty;
\r
116 ViewState["Target"] = value;
\r
120 public virtual string Text
\r
124 object o = ViewState["Text"];
\r
127 return String.Empty;
\r
131 ViewState["Text"] = value;
\r
135 public override void Initialize()
\r
137 textFieldDescriptor = null;
\r
138 urlFieldDescriptor = null;
\r
141 public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)
\r
143 base.InitializeCell(cell, columnIndex, itemType);
\r
144 if(Enum.IsDefined(typeof(ListItemType), itemType) && itemType != ListItemType.Footer)
\r
146 HyperLink toDisplay = new HyperLink();
\r
147 toDisplay.Text = Text;
\r
148 toDisplay.NavigateUrl = NavigateUrl;
\r
149 toDisplay.Target = Target;
\r
150 if(DataTextField.Length > 0 || DataNavigateUrlField.Length>0)
\r
152 toDisplay.DataBinding += new EventHandler(OnDataBindHyperLinkColumn);
\r
154 cell.Controls.Add(toDisplay);
\r
158 private void OnDataBindHyperLinkColumn(object sender, EventArgs e)
\r
160 HyperLink link = (HyperLink)sender;
\r
161 object item = ((DataGridItem)link.NamingContainer).DataItem;
\r
162 if(textFieldDescriptor == null && urlFieldDescriptor == null)
\r
164 textFieldDescriptor = TypeDescriptor.GetProperties(item).Find(DataTextField, true);
\r
165 if(textFieldDescriptor == null && !DesignMode)
\r
166 throw new HttpException(HttpRuntime.FormatResourceString("Field_Not_Found", DataTextField));
\r
167 urlFieldDescriptor = TypeDescriptor.GetProperties(item).Find(DataNavigateUrlField, true);
\r
168 if(urlFieldDescriptor == null && !DesignMode)
\r
169 throw new HttpException(HttpRuntime.FormatResourceString("Field_Not_Found", DataNavigateUrlField));
\r
172 if(textFieldDescriptor != null)
\r
174 link.Text = FormatDataTextValue(textFieldDescriptor.GetValue(item));
\r
177 link.Text = "Sample_DataBound_Text";
\r
180 if(urlFieldDescriptor != null)
\r
182 link.NavigateUrl = FormatDataNavigateUrlValue(urlFieldDescriptor.GetValue(item));
\r
185 link.NavigateUrl = "url";
\r
189 protected virtual string FormatDataNavigateUrlValue(object dataUrlValue)
\r
191 string retVal = String.Empty;
\r
192 if(dataUrlValue != null)
\r
194 if(DataNavigateUrlFormatString.Length > 0)
\r
196 retVal = String.Format(DataNavigateUrlFormatString, dataUrlValue);
\r
199 retVal = dataUrlValue.ToString();
\r
205 protected virtual string FormatDataTextValue(object dataTextValue)
\r
207 string retVal = String.Empty;
\r
208 if(dataTextValue != null)
\r
210 if(DataTextFormatString.Length > 0)
\r
212 retVal = String.Format(DataTextFormatString, dataTextValue);
\r
215 retVal = dataTextValue.ToString();
\r