summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxue <>2006-01-25 04:56:19 +0000
committerxue <>2006-01-25 04:56:19 +0000
commit196141bf72e092c911906d9530fa4ddf53bc3276 (patch)
tree585bb43edbe639326dcef5fc30037614a8b54055
parentf884ea21ea8f0c6ced02565bd647a5692f82aea4 (diff)
Added TDropDownList validation demos.
-rw-r--r--demos/quickstart/protected/pages/Controls/List.page2
-rw-r--r--demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.page100
-rw-r--r--demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.php65
-rw-r--r--framework/Web/UI/WebControls/TDropDownList.php12
4 files changed, 163 insertions, 16 deletions
diff --git a/demos/quickstart/protected/pages/Controls/List.page b/demos/quickstart/protected/pages/Controls/List.page
index 557a8c6f..d076da2f 100644
--- a/demos/quickstart/protected/pages/Controls/List.page
+++ b/demos/quickstart/protected/pages/Controls/List.page
@@ -27,7 +27,7 @@ Since <tt>TListControl</tt> inherits from <tt>TDataBoundControl</tt>, these list
<h2>TListBox</h2>
<p>
-<tt>TListBox</tt> displays a list box that allows single or multiple selection. Set the property <tt>SelectionMode</tt> as <tt>Single</tt> to make a single selection list box, and <tt>Multiple</tt> a multiple selection list box. The items in the list box are represented by the <tt>Items</tt> property. The number of rows displayed in the box is specified via the <tt>Rows</tt> property value.
+<tt>TListBox</tt> displays a list box that allows single or multiple selection. Set the property <tt>SelectionMode</tt> as <tt>Single</tt> to make a single selection list box, and <tt>Multiple</tt> a multiple selection list box. The number of rows displayed in the box is specified via the <tt>Rows</tt> property value.
</p>
<com:RunBar PagePath="Controls.Samples.TListBox.Home" />
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.page
index 5123cc94..ed3c07a3 100644
--- a/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.page
+++ b/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.page
@@ -77,7 +77,7 @@ Auto postback dropdown list:
Dropdown list's behavior upon postback:
</td>
<td class="sampleaction">
-<com:TDropDownList ID="ListBox1">
+<com:TDropDownList ID="DropDownList1">
<com:TListItem Value="value 1" Text="item 1" />
<com:TListItem Value="value 2" Text="item 2" Selected="true" />
<com:TListItem Value="value 3" Text="item 3" />
@@ -90,4 +90,102 @@ Dropdown list's behavior upon postback:
</table>
+
+<h2>DropDown Lists with DataBinding</h2>
+<i>Use Ctrl + Mouse Click to change selection</i>
+<br/>
+
+<table class="sampletable">
+
+<tr>
+<td class="samplenote">
+Databind to an integer-indexed array:
+</td>
+<td class="sampleaction">
+<com:TDropDownList ID="DBDropDownList1"
+ AutoPostBack="true"
+ OnSelectedIndexChanged="DBDropDownList1Changed" />
+<com:TLabel ID="DBDropDownList1Result" ForeColor="red" />
+</td>
+</tr>
+
+<tr>
+<td class="samplenote">
+Databind to an associative array:
+</td>
+<td class="sampleaction">
+<com:TDropDownList ID="DBDropDownList2"
+ AutoPostBack="true"
+ OnSelectedIndexChanged="DBDropDownList2Changed" />
+<com:TLabel ID="DBDropDownList2Result" ForeColor="red" />
+</td>
+</tr>
+
+<tr>
+<td class="samplenote">
+Databind with DataTextField and DataValueField specified:
+</td>
+<td class="sampleaction">
+<com:TDropDownList ID="DBDropDownList3"
+ AutoPostBack="true"
+ DataTextField="name"
+ DataValueField="id"
+ OnSelectedIndexChanged="DBDropDownList3Changed" />
+<com:TLabel ID="DBDropDownList3Result" ForeColor="red" />
+</td>
+</tr>
+
+</table>
+
+
+<h2>List Boxes with Validation</h2>
+
+<table class="sampletable">
+
+<tr>
+<td class="samplenote">
+Dropdown list is being validated:
+</td>
+<td class="sampleaction">
+<com:TDropDownList ID="VDropDownList1">
+ <com:TListItem Value="value 1" Text="item 1" />
+ <com:TListItem Value="value 2" Text="item 2" />
+ <com:TListItem Value="value 3" Text="item 3" />
+ <com:TListItem Value="value 4" Text="item 4" />
+</com:TDropDownList>
+<com:TRequiredFieldValidator
+ ControlToValidate="VDropDownList1"
+ ErrorMessage="You must make a selection other than the first option"
+ InitialValue="value 1"
+ Display="Dynamic"
+ ValidationGroup="Group1"
+ />
+<com:TButton Text="Submit" ValidationGroup="Group1" />
+</td>
+</tr>
+
+<tr>
+<td class="samplenote">
+Dropdown list causing validation:
+</td>
+<td class="sampleaction">
+<com:TTextBox ID="TextBox" />
+<com:TRequiredFieldValidator
+ ControlToValidate="TextBox"
+ ErrorMessage="You must enter a value"
+ Display="Dynamic"
+ ValidationGroup="Group2"
+ />
+<com:TDropDownList
+ ID="VDropDownList2"
+ AutoPostBack="true"
+ ValidationGroup="Group2">
+ <com:TListItem Text="Agree" />
+ <com:TListItem Text="Disagree" />
+</com:TDropDownList>
+</td>
+</tr>
+
+</table>
+
</com:TContent> \ No newline at end of file
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.php b/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.php
index 5dfa3bba..c220d697 100644
--- a/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.php
+++ b/demos/quickstart/protected/pages/Controls/Samples/TDropDownList/Home.php
@@ -2,28 +2,67 @@
class Home extends TPage
{
- public function selectionChanged($sender,$param)
+ public function onLoad($param)
{
- if(($index=$sender->SelectedIndex)>=0)
+ parent::onLoad($param);
+ if(!$this->IsPostBack)
{
- $value=$sender->SelectedValue;
- $text=$sender->SelectedItem->Text;
- $this->SelectionResult->Text="Your selection is (Index: $index, Value: $value, Text: $text).";
+ $data=array('item 1','item 2','item 3','item 4');
+ $this->DBDropDownList1->DataSource=$data;
+ $this->DBDropDownList1->dataBind();
+
+ $data=array('key 1'=>'item 1','key 2'=>'item 2',
+ 'key 3'=>'item 3','key 4'=>'item 4');
+ $this->DBDropDownList2->DataSource=$data;
+ $this->DBDropDownList2->dataBind();
+
+ $data=array(
+ array('id'=>'001','name'=>'John','age'=>31),
+ array('id'=>'002','name'=>'Mary','age'=>30),
+ array('id'=>'003','name'=>'Cary','age'=>20));
+ $this->DBDropDownList3->DataSource=$data;
+ $this->DBDropDownList3->dataBind();
}
- else
- $this->SelectionResult->Text="Your selection is empty.";
}
- public function buttonClicked($sender,$param)
+ protected function collectSelectionResult($input,$output)
{
- if(($index=$this->ListBox1->SelectedIndex)>=0)
+ $indices=$input->SelectedIndices;
+ $result='';
+ foreach($indices as $index)
{
- $value=$this->ListBox1->SelectedValue;
- $text=$this->ListBox1->SelectedItem->Text;
- $this->SelectionResult2->Text="Your selection is (Index: $index, Value: $value, Text: $text).";
+ $item=$input->Items[$index];
+ $result.="(Index: $index, Value: $item->Value, Text: $item->Text)\n";
}
+ if($result==='')
+ $output->Text='Your selection is empty.';
else
- $this->SelectionResult2->Text="Your selection is empty.";
+ $output->Text='Your selection is: '.$result;
+ }
+
+ public function DBDropDownList1Changed($sender,$param)
+ {
+ $this->collectSelectionResult($sender,$this->DBDropDownList1Result);
+ }
+
+ public function DBDropDownList2Changed($sender,$param)
+ {
+ $this->collectSelectionResult($sender,$this->DBDropDownList2Result);
+ }
+
+ public function DBDropDownList3Changed($sender,$param)
+ {
+ $this->collectSelectionResult($sender,$this->DBDropDownList3Result);
+ }
+
+ public function selectionChanged($sender,$param)
+ {
+ $this->collectSelectionResult($sender,$this->SelectionResult);
+ }
+
+ public function buttonClicked($sender,$param)
+ {
+ $this->collectSelectionResult($this->DropDownList1,$this->SelectionResult2);
}
}
diff --git a/framework/Web/UI/WebControls/TDropDownList.php b/framework/Web/UI/WebControls/TDropDownList.php
index a3c02c15..14a4dac4 100644
--- a/framework/Web/UI/WebControls/TDropDownList.php
+++ b/framework/Web/UI/WebControls/TDropDownList.php
@@ -26,7 +26,7 @@ Prado::using('System.Web.UI.WebControls.TListControl');
* @package System.Web.UI.WebControls
* @since 3.0
*/
-class TDropDownList extends TListControl implements IPostBackDataHandler
+class TDropDownList extends TListControl implements IPostBackDataHandler, IValidatable
{
/**
* Adds attributes to renderer.
@@ -101,5 +101,15 @@ class TDropDownList extends TListControl implements IPostBackDataHandler
{
throw new TNotSupportedException('dropdownlist_selectedindices_unsupported');
}
+
+ /**
+ * Returns the value to be validated.
+ * This methid is required by IValidatable interface.
+ * @return mixed the value of the property to be validated.
+ */
+ public function getValidationPropertyValue()
+ {
+ return $this->getSelectedValue();
+ }
}
?> \ No newline at end of file