Yii gridview CHTML::dropdown 因为值不起作用
Yii gridview CHTML::dropdown as value doesn't work
我正在尝试在 gridview 中实现下拉列表,但它不起作用。
这是我的代码
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->roadies_search(),
'filter' =>$model,
'columns'=>array(
array(
'name'=>'hname_search',
'header'=>'Hospital Name',
'value'=>'($data->AssociatedHospitals) ? $data->AssociatedHospitals : ""',
),
array(
'type'=>'raw',
'header'=>'Users',
'id' => 'test',
'value'=>function(){
$res=Yii::app()->db->createCommand("SELECT name,id FROM med_user WHERE rank>3")->queryAll();
$html = '<select name="user" style="width:100%;">
<option selected>Select User</option>
';
foreach ($res as $key) {
$html.='<option value="'.$key['id'].'">'.$key['name'].'</option>
';
}
$html.='</select>';
return $html;
},
),
)
));
我也尝试过使用以下功能:
public function getUsername(){
$res=Yii::app()->db->createCommand("SELECT name,id FROM med_user WHERE rank>3")->queryAll();
return CHtml::dropDownList('usersselectlist'.$this->id,'user_id',CHtml::listData($res, 'id', 'name'));
}
我想将所有用户显示为网格视图中每一行的下拉列表。
编辑
我发现下拉菜单在 Firefox 上工作正常,但问题出在 chrome。它没有显示选定的值。
这是一个例子
Chrome: http://i.imgur.com/eAvBRwO.png
这种方式真的很糟糕。您将为每一行执行 SQL 查询,为什么不在网格之外使用它?
$res=Yii::app()->db->createCommand("SELECT name,id FROM med_user WHERE rank>3")->queryAll();
$select_data = CHtml::listData($res, 'id', 'name');
......
array(
'type'=>'raw',
'header'=>'Users',
'id' => 'test',
'value'=>function($data) use ($select_data){
return CHtml::dropDownList('usersselectlist'.$data->id','',$select_data);
},
),
.......
像这样的东西应该有用。
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->roadies_search(),
'filter' =>$model,
'columns'=>array(
array(
'name'=>'hname_search',
'header'=>'Hospital Name',
'value'=>'($data->AssociatedHospitals) ? $data->AssociatedHospitals : ""',
),
array(
'type'=>'raw',
'header'=>'Users',
'id' => 'test',
'value'=>function(){
// but better prepare data in model and set here from controller
$dataReader = Yii::app()
->db
->createCommand("SELECT name,id FROM med_user WHERE rank>3")
->query();
$dropList = array();
foreach ($dataReader as $row) {
$id = $row['id'];
$dropList[$id] = $row['name'];
}
return CHtml::dropDownList('my', null/* or selected id */, $dropList);
},
),
)
));
我正在尝试在 gridview 中实现下拉列表,但它不起作用。
这是我的代码
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->roadies_search(),
'filter' =>$model,
'columns'=>array(
array(
'name'=>'hname_search',
'header'=>'Hospital Name',
'value'=>'($data->AssociatedHospitals) ? $data->AssociatedHospitals : ""',
),
array(
'type'=>'raw',
'header'=>'Users',
'id' => 'test',
'value'=>function(){
$res=Yii::app()->db->createCommand("SELECT name,id FROM med_user WHERE rank>3")->queryAll();
$html = '<select name="user" style="width:100%;">
<option selected>Select User</option>
';
foreach ($res as $key) {
$html.='<option value="'.$key['id'].'">'.$key['name'].'</option>
';
}
$html.='</select>';
return $html;
},
),
)
));
我也尝试过使用以下功能:
public function getUsername(){
$res=Yii::app()->db->createCommand("SELECT name,id FROM med_user WHERE rank>3")->queryAll();
return CHtml::dropDownList('usersselectlist'.$this->id,'user_id',CHtml::listData($res, 'id', 'name'));
}
我想将所有用户显示为网格视图中每一行的下拉列表。
编辑
我发现下拉菜单在 Firefox 上工作正常,但问题出在 chrome。它没有显示选定的值。
这是一个例子
Chrome: http://i.imgur.com/eAvBRwO.png
这种方式真的很糟糕。您将为每一行执行 SQL 查询,为什么不在网格之外使用它?
$res=Yii::app()->db->createCommand("SELECT name,id FROM med_user WHERE rank>3")->queryAll();
$select_data = CHtml::listData($res, 'id', 'name');
......
array(
'type'=>'raw',
'header'=>'Users',
'id' => 'test',
'value'=>function($data) use ($select_data){
return CHtml::dropDownList('usersselectlist'.$data->id','',$select_data);
},
),
.......
像这样的东西应该有用。
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->roadies_search(),
'filter' =>$model,
'columns'=>array(
array(
'name'=>'hname_search',
'header'=>'Hospital Name',
'value'=>'($data->AssociatedHospitals) ? $data->AssociatedHospitals : ""',
),
array(
'type'=>'raw',
'header'=>'Users',
'id' => 'test',
'value'=>function(){
// but better prepare data in model and set here from controller
$dataReader = Yii::app()
->db
->createCommand("SELECT name,id FROM med_user WHERE rank>3")
->query();
$dropList = array();
foreach ($dataReader as $row) {
$id = $row['id'];
$dropList[$id] = $row['name'];
}
return CHtml::dropDownList('my', null/* or selected id */, $dropList);
},
),
)
));