Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
/**
3
 * THyperLinkColumn class file
4
 *
5
 * @author Qiang Xue <qiang.xue@gmail.com>
6
 * @link http://www.pradosoft.com/
7
 * @copyright Copyright &copy; 2005-2008 PradoSoft
8
 * @license http://www.pradosoft.com/license/
9
 * @version $Id: THyperLinkColumn.php 2541 2008-10-21 15:05:13Z qiang.xue $
10
 * @package System.Web.UI.WebControls
11
 */
12
 
13
/**
14
 * TDataGridColumn class file
15
 */
16
Prado::using('System.Web.UI.WebControls.TDataGridColumn');
17
/**
18
 * THyperLink class file
19
 */
20
Prado::using('System.Web.UI.WebControls.THyperLink');
21
 
22
/**
23
 * THyperLinkColumn class
24
 *
25
 * THyperLinkColumn contains a hyperlink for each item in the column.
26
 * You can set the text and the url of the hyperlink by {@link setText Text}
27
 * and {@link setNavigateUrl NavigateUrl} properties, respectively.
28
 * You can also bind the text and url to specific data field in datasource
29
 * by setting {@link setDataTextField DataTextField} and
30
 * {@link setDataNavigateUrlField DataNavigateUrlField}.
31
 * Both can be formatted before rendering according to the
32
 * {@link setDataTextFormatString DataTextFormatString} and
33
 * and {@link setDataNavigateUrlFormatString DataNavigateUrlFormatString}
34
 * properties, respectively. If both {@link setText Text} and {@link setDataTextField DataTextField}
35
 * are present, the latter takes precedence.
36
 * The same rule applies to {@link setNavigateUrl NavigateUrl} and
37
 * {@link setDataNavigateUrlField DataNavigateUrlField} properties.
38
 *
39
 * The hyperlinks in the column can be accessed by one of the following two methods:
40
 * <code>
41
 * $datagridItem->HyperLinkColumnID->HyperLink
42
 * $datagridItem->HyperLinkColumnID->Controls[0]
43
 * </code>
44
 * The second method is possible because the hyperlink control created within the
45
 * datagrid cell is the first child.
46
 *
47
 * @author Qiang Xue <qiang.xue@gmail.com>
48
 * @version $Id: THyperLinkColumn.php 2541 2008-10-21 15:05:13Z qiang.xue $
49
 * @package System.Web.UI.WebControls
50
 * @since 3.0
51
 */
52
class THyperLinkColumn extends TDataGridColumn
53
{
54
	/**
55
	 * @return string the text caption of the hyperlink
56
	 */
57
	public function getText()
58
	{
59
		return $this->getViewState('Text','');
60
	}
61
 
62
	/**
63
	 * Sets the text caption of the hyperlink.
64
	 * @param string the text caption to be set
65
	 */
66
	public function setText($value)
67
	{
68
		$this->setViewState('Text',$value,'');
69
	}
70
 
71
	/**
72
	 * @return string the field name from the data source to bind to the hyperlink caption
73
	 */
74
	public function getDataTextField()
75
	{
76
		return $this->getViewState('DataTextField','');
77
	}
78
 
79
	/**
80
	 * @param string the field name from the data source to bind to the hyperlink caption
81
	 */
82
	public function setDataTextField($value)
83
	{
84
		$this->setViewState('DataTextField',$value,'');
85
	}
86
 
87
	/**
88
	 * @return string the formatting string used to control how the hyperlink caption will be displayed.
89
	 */
90
	public function getDataTextFormatString()
91
	{
92
		return $this->getViewState('DataTextFormatString','');
93
	}
94
 
95
	/**
96
	 * @param string the formatting string used to control how the hyperlink caption will be displayed.
97
	 */
98
	public function setDataTextFormatString($value)
99
	{
100
		$this->setViewState('DataTextFormatString',$value,'');
101
	}
102
 
103
	/**
104
	 * @return string the URL to link to when the hyperlink is clicked.
105
	 */
106
	public function getNavigateUrl()
107
	{
108
		return $this->getViewState('NavigateUrl','');
109
	}
110
 
111
	/**
112
	 * Sets the URL to link to when the hyperlink is clicked.
113
	 * @param string the URL
114
	 */
115
	public function setNavigateUrl($value)
116
	{
117
		$this->setViewState('NavigateUrl',$value,'');
118
	}
119
 
120
	/**
121
	 * @return string the field name from the data source to bind to the navigate url of hyperlink
122
	 */
123
	public function getDataNavigateUrlField()
124
	{
125
		return $this->getViewState('DataNavigateUrlField','');
126
	}
127
 
128
	/**
129
	 * @param string the field name from the data source to bind to the navigate url of hyperlink
130
	 */
131
	public function setDataNavigateUrlField($value)
132
	{
133
		$this->setViewState('DataNavigateUrlField',$value,'');
134
	}
135
 
136
	/**
137
	 * @return string the formatting string used to control how the navigate url of hyperlink will be displayed.
138
	 */
139
	public function getDataNavigateUrlFormatString()
140
	{
141
		return $this->getViewState('DataNavigateUrlFormatString','');
142
	}
143
 
144
	/**
145
	 * @param string the formatting string used to control how the navigate url of hyperlink will be displayed.
146
	 */
147
	public function setDataNavigateUrlFormatString($value)
148
	{
149
		$this->setViewState('DataNavigateUrlFormatString',$value,'');
150
	}
151
 
152
	/**
153
	 * @return string the target window or frame to display the Web page content linked to when the hyperlink is clicked.
154
	 */
155
	public function getTarget()
156
	{
157
		return $this->getViewState('Target','');
158
	}
159
 
160
	/**
161
	 * Sets the target window or frame to display the Web page content linked to when the hyperlink is clicked.
162
	 * @param string the target window, valid values include '_blank', '_parent', '_self', '_top' and empty string.
163
	 */
164
	public function setTarget($value)
165
	{
166
		$this->setViewState('Target',$value,'');
167
	}
168
 
169
	/**
170
	 * Initializes the specified cell to its initial values.
171
	 * This method overrides the parent implementation.
172
	 * It creates a hyperlink within the cell.
173
	 * @param TTableCell the cell to be initialized.
174
	 * @param integer the index to the Columns property that the cell resides in.
175
	 * @param string the type of cell (Header,Footer,Item,AlternatingItem,EditItem,SelectedItem)
176
	 */
177
	public function initializeCell($cell,$columnIndex,$itemType)
178
	{
179
		if($itemType===TListItemType::Item || $itemType===TListItemType::AlternatingItem || $itemType===TListItemType::SelectedItem || $itemType===TListItemType::EditItem)
180
		{
181
			$link=new THyperLink;
182
			$link->setText($this->getText());
183
			$link->setNavigateUrl($this->getNavigateUrl());
184
			$link->setTarget($this->getTarget());
185
			if($this->getDataTextField()!=='' || $this->getDataNavigateUrlField()!=='')
186
				$link->attachEventHandler('OnDataBinding',array($this,'dataBindColumn'));
187
			$cell->getControls()->add($link);
188
			$cell->registerObject('HyperLink',$link);
189
		}
190
		else
191
			parent::initializeCell($cell,$columnIndex,$itemType);
192
	}
193
 
194
	/**
195
	 * Databinds a cell in the column.
196
	 * This method is invoked when datagrid performs databinding.
197
	 * It populates the content of the cell with the relevant data from data source.
198
	 */
199
	public function dataBindColumn($sender,$param)
200
	{
201
		$item=$sender->getNamingContainer();
202
		$data=$item->getData();
203
		if(($field=$this->getDataTextField())!=='')
204
		{
205
			$value=$this->getDataFieldValue($data,$field);
206
			$text=$this->formatDataValue($this->getDataTextFormatString(),$value);
207
			$sender->setText($text);
208
		}
209
		if(($field=$this->getDataNavigateUrlField())!=='')
210
		{
211
			$value=$this->getDataFieldValue($data,$field);
212
			$url=$this->formatDataValue($this->getDataNavigateUrlFormatString(),$value);
213
			$sender->setNavigateUrl($url);
214
		}
215
	}
216
}
217