1

我尝试在 mvcgrid 中填充快速搜索的下拉菜单,我的代码是:

 $g = $this->add('MVCGrid');
 $g->setModel('materiale');
 $g->addPaginator(25);
 $s = $g->addQuickSearch(array('nome_mat'));

 $value_list = array(
        1=>'Granito',
        2=>'Marmo'
    );

 $s->addField('dropdown','tipo_mat','Tipo_mat: ')->setValueList($value_list);

下拉列表出现在快速搜索表单上。我的数据库字段是tipo_mat,但是当我单击快速搜索按钮时,什么都没有,有人可以帮我吗?谢谢

4

1 回答 1

0

您会发现快速搜索只不过是一个简单的表单,它在提交时将条件应用于您的网格。理论上,你可以有一个标准的表格在那里做同样的事情:

$search = $g->add('Form',null,'quick_search',array('form/quicksearch','form'));
$search->addFiled('dropdown','tipo_mat')
    ->setValueList($value_list)
    ->set($_GET['tipo_mat']);
$search->addField('search','q')
    ->set($_GET['q']);

// Handle submit of form, reload grid with AjAX, pass values as arguments
if($search->isSubmitted()){
    $grid->js()->reload($search->getAllData())->execute();
}

// If values are passed, use them
if($_GET['q'])
    $grid->dq->where('name like','%'.$_GET['q'].'%');

if($_GET['tipo_mat'])
    $grid->dq->where('foo',$_GET['tipo_mat']);

“过滤器”和“快速搜索”类可以帮助您保存搜索值,但您一定不要害怕查看它们的来源并创建自己的可以正确应用参数的快速搜索类。

也许在您的情况下使用过滤器比快速搜索更好,因为“applyDQ”的处理方式:

https://github.com/atk4/atk4/blob/master/lib/Filter.php#L62

于 2011-11-28T10:25:18.937 回答