DropDown for pageSize in GridView

DropDown for pageSize in GridView

برای نمایش تعداد آیتمی که در Gridview  نمایش داده می شود شما می توانید از page size  استفاده کنید

در آموزش های قبلی نحوه ی تنظیم کردن این قابلیت را با استفاده از dataprovider قرار داده ایم

در بخش ما می خواهیم انتخاب تعداد آیتمی که قرار است gridview نمایش دهد را در اختیاز کاربر قرار دهیم
به این صورت که یک dropdown در زیر gridview قرار می دهیم و کاربر به وسیله ی آن تعداد آیتم را انتخاب می کند.

در ابتدا در gridview کد زیر را قرار می دهیم تا دراپدان خود را به آن معرفی کنیم

        'filterSelector' => 'select[name="per-page"]',
    GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'id' => 'admin-crud-id',
        'showFooter' => true,
        'filterSelector' => 'select[name="per-page"]',
        'columns' => [

در مرحله بعد دراپ دان خود را با نام مشخص شده در بالا یا انتهای gridview قرار می دهیم

   <div class="col-lg-4">
        <select  name="per-page" class="form-control">
            <?php
            for ($i = 1; $i < $dataProvider->getCount(); $i +=3) {
                ?>
                <option value="<?php echo $i; ?>"><?php echo $i; ?></option>

                <?php
            }
            ?>
                <option selected="" value="<?php echo $dataProvider->getCount(); ?>"><?php echo $dataProvider->getCount(); ?></option>
        </select>
    </div>

در کد بالا با استفاده از

<?php echo $dataProvider->getCount(); ?>

تعداد کل آیتم ها را به دست می آوریم
سپس با حلقه for به صورت دلخواه چند آیتم برای دراپدان مشخص کردیم .

DropDown for pageSize in GridView

در صورت کلی و با استفاده از pjax کد من به شکل زیر می باشد :


    <?php
    \yii\widgets\Pjax::begin([
        'enableReplaceState' => false,
        'enablePushState' => false,
        'clientOptions' => [
            'data-pjax-container' => 'buy_search',
        ]
    ]);
    <div class="search-form" >
        <?php echo $this->render('_search', ['model' => $searchModel]); ?>
    </div>
    <?=
    GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'id' => 'admin-crud-id',
        'showFooter' => true,
        'filterSelector' => 'select[name="per-page"]',
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'title',
            [
                'attribute' => 'cat_id',
                'value' => 'cat.title'
            ],
            [
                'attribute' => 'user_id',
                'value' => 'user.fullname'
            ],
            [
                'attribute' => 'buy_date',
                //['name'=>'BuySearch[buy_date]','id'=>'buysearch-buy_date','language' => 'fa', 'dateFormat' => 'yyyy-MM-dd']
                'value' => function($data) {
                    if (!is_null($data->buy_date)) {
                        $title = Yii::$app->jdate->date('o/n/d', (int) strtotime($data->buy_date));
                    } else {
                        $title = "-";
                    }
                    return $title;
                },
            ],
            [
                'attribute' => 'status',
                'filter'
 => Html::activeDropDownList($searchModel, 'status', ["1" 
=> "بستانکار", "0" => "بدهکار"], ['class' => 'form-control', 'prompt' => 'همه ']),
                'value' => function($data) {
            switch ($data->status) {
                case 0:
                    $status = 'بدهکار';
                    break;
                case 1:
                    $status = 'بستانکار';
                    break;
                default :
                    $status = '-';
            }
            return $status;
        },
            ],
            [
                'attribute' => 'price',
                'value' => function($data) {
                    if (!is_null($data->price)) {
                        $title = number_format($data->price);
                    } else {
                        $title = "-";
                    }
                    return $title;
                },
                'footer' => $price, // \app\components\PTotal::pageTotal($dataProvider->models, 'price'),
            ],
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]);
    ?>
    <div class="col-lg-4">
        <select  name="per-page" class="form-control">
            <?php
            for ($i = 1; $i < $dataProvider->getCount(); $i +=3) {
                ?>
                <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
                <?php
            }
            ?>
                <option selected="" value="<?php echo $dataProvider->getCount(); ?>">
<?php echo $dataProvider->getCount(); ?></option>
        </select>
    </div>
    <?php \yii\widgets\Pjax::end(); ?>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *