将数据从gridview按钮传递到模态窗口

时间:2013-08-03 21:46:16

标签: php jquery twitter-bootstrap yii modal-dialog

我正在尝试将数据从gridview中的按钮传递到模态窗口。我需要传递记录的ID,以便能够在模态窗口中提交表单后引用它。

我正在努力解决这个问题。首先,我需要能够将ID变量传递给模态,然后单击提交按钮进行ajax调用以在数据库中创建新记录。

Gridview

if(isset($results)){
    $this->widget('bootstrap.widgets.TbExtendedGridView', array(
        'id'=>'searchgrid',
        'fixedHeader' => true,
        'headerOffset' => 40, // 40px is the height of the main navigation at bootstrap
        'type'=>'condensed',
        'dataProvider'=>$results,
        'responsiveTable' => true,
        'template'=>"{items}",
        'columns'=>array(
            array('name'=>'title', 'header'=>'Name'),
            array('name'=>'city', 'header'=>'City'),
            array('name'=>'state', 'header'=>'State'),
            array('name'=>'leads', 'header'=>'Leads', 'value'=>'Parkslist::model()->leadRange($data["leads"])'),
            array('name'=>'pastbid', 'header'=>'Previous', 'value'=>'Parkslist::model()->pastBid($data["pasthighbid"])'),
            array('name'=>'currentbid', 'header'=>'Current', 'value'=>'Parkslist::model()->highBid($data["currenthighbid"], $data["secondhighbid"], $data["countcurrenthighbid"])'),
            array('name'=>'minimumbid', 'header'=>'Minimum', 'value'=>'Parkslist::model()->minimumBid($data["currenthighbid"], $data["secondhighbid"], $data["countcurrenthighbid"])'),
            array('name'=>'userhighbid', 'header'=>'Your Bid'),
            array('name'=>'placebid', 'header'=>'Bid', 'value'=>'CHtml::textField("bid" . $data["id"])', 'type'=>'raw'),
            array('name'=>'report', 'header'=>'Report',
                'value'=>function($data){
                    $this->widget('bootstrap.widgets.TbButton', array(
                        'label' => 'Click me',
                        'type' => 'primary',
                        'htmlOptions' => array(
                            'data-toggle' => 'modal',
                            'data-target' => '#myModal',
                            'data-id' => '$data["id"]',
                        ),
                    ));
                }
            ),
        ),
    ));
}

模态

<?php
$this->beginWidget('bootstrap.widgets.TbModal', array('id' => 'myModal')); ?>

    <div class="modal-header">
        <a class="close" data-dismiss="modal">&times;</a>
        <h4>Why should this park be removed?</h4>
    </div>
    <form>
    <div class="modal-body">
        <select>
            <option>Duplicate</option>
            <option>Closed</option>
        </select>
    </div>

    <div class="modal-footer">
        <?php $this->widget('bootstrap.widgets.TbButton', array(
        'type' => 'primary',
        'buttonType'=>'submit',
        'label' => 'Save changes',
        'url' => '#',
        'htmlOptions' => array('data-dismiss' => 'modal'),
    )); ?>
        <?php $this->widget('bootstrap.widgets.TbButton', array(
        'label' => 'Close',
        'url' => '#',
        'htmlOptions' => array('data-dismiss' => 'modal'),
    )); ?>
    </div>
    </form>
<?php $this->endWidget(); ?>

1 个答案:

答案 0 :(得分:1)

我能够让这个工作。我认为可能有更好的解决方案,但这似乎有效。

首先,在gridview中的按钮内部,我将按钮ID =设为记录的id。接下来,我创建了一个名为includeData的javascript函数,并包含了按钮ID。

按钮代码

array('name'=>'report', 'header'=>'Report',
                'value'=>function($data){
                    $this->widget('bootstrap.widgets.TbButton', array(
                        'label' => 'Click me',
                        'type' => 'primary',
                        'htmlOptions' => array(
                            'id'=>$data["id"],
                            'data-toggle' => 'modal',
                            'data-target' => '#myModal',
                            'data-id' => '$data["id"]',
                            'onClick' => 'includeData(this.id);'
                        ),
                    ));
                }
            ),

JS代码

<script type='text/javascript'>
function includeData(parkid){
        $('#reportparkid').val(parkid);

}
</script>

JS函数只是将隐藏字段的值设置为等于buttonid。我希望看到一些更好的方法来处理这个问题。

由于