OnUpdateCommand の 事前に、EditItem の OnItemCreated メソッドが呼ばれる

かなりハマり。TDataList の OnUpdateCommnad を実行した際に、動的に設定していたDropDownList の DataSource を再設定する。しかも、同じアイテム中のDropDownList のSelectedValue をフィルター値にしていると、それが吹っ飛んでしまう。(全然違うDataSoureが入って、動的に設定していたDropDownList の SelectedValue が NULL値となる。)
例(.tplの側)
<com:TDropDownList id="col_name_ddlist" width="95%"
	DataTextField="Field"
       DataValueField="Field"
	SelectedValue="<%#$this->Data->col_name %>" />
<com:TDropDownList id="kubun_group_id_ddlist" width="95%"
	DataTextField="kubun_group_name"
       DataValueField="kubun_group_id"
	SelectedValue="<%#$this->Data->kubun_group_id %>" />
(.php の側 OnItemCreated のメソッドで、DataSourceを入れている。)
$t=$this->sqlmap()->queryForList('tables');
$item->table_name_ddlist->DataSource=$t;
$item->table_name_ddlist->databind();
if(!$item->table_name_ddlist->SelectedValue){
  $item->table_name_ddlist->SelectedIndex=0;
}
//var_dump($item->ItemIndex."-".$item->table_name_ddlist->SelectedValue);
$item->col_name_ddlist->DataSource=$this->getColumns($item->table_name_ddlist->SelectedValue);
$item->col_name_ddlist->databind();
これで、OnUpdateCommnad 時に 悪さする。。。 (こりゃ バグだよ。。。)以下の様に記述して、回避するとOK。
$t=$this->sqlmap()->queryForList('tables');
$item->table_name_ddlist->DataSource=$t;
$item->table_name_ddlist->databind();
if(!$item->table_name_ddlist->SelectedValue){
     $item->table_name_ddlist->SelectedIndex=0;
}
//var_dump($item->ItemIndex."-".$item->Data->table_name);
if($item->Data->table_name){	//save の事前に読み込まれて、値が変更されるのを回避
     $item->col_name_ddlist->DataSource=$this->getColumns($item->Data->table_name);
    $item->col_name_ddlist->databind();
}
ActiveDropDownList の時にも同様。実際には、ActiveDropDownList での例だったので、そっちの仕業かもとおもって、ハマった。動的にDataSource を入れ替えるってことが無ければ問題ないのだけど・・・ 普通にあるよなぁ とちょっと思う。