magento2 – A second custom block must be displayed with a grid under the admin area (grid and form must be displayed on a page)

I need to display a grid before this form appears. For grid I have created another block file.


            offer_section
            template_edit_tab_offer
        

Offer.php file

/ **
* @param context $ context
* @param Registry $ Registry
* @param FormFactory $ formFactory
* @param array $ data
* /
public function __construct (
Context $ context,
Registry $ registry,
FormFactory $ formFactory,
Array $ data = []
) {
parent :: __ construct ($ context, $ registry, $ formFactory, $ data);
$ this -> _ coreRegistry = $ registry;
$ this -> _ formFactory = $ formFactory;
}
/ **
* Prepare form fields
*
* @return  Magento  Backend  Block  Widget  Form
* /
protected function _prepareForm ()
{
/ ** @var $ model  Expia  Partners  Model  Grid * /
$ model = $ this -> _ coreRegistry-> registry (& # 39; partner_data & # 39;);
/ ** @var  Magento  Framework  Data  Form $ form * /
$ form = $ this -> _ formFactory-> create ();
$ form-> setHtmlIdPrefix (& # 39; offer _ & # 39;);
$ form-> setFieldNameSuffix (& # 39; offer & # 39;);
$ fieldset = $ form-> addFieldset (& # 39; base_fieldset_offer & # 39 ;,   ['legend' => __('General')]);
if ($ model-> getId ()) {
$ fieldset-> addField (& # 39; id & # 39 ;, & # 39; hidden & # 39;['name' => 'offer_id']);
}
$ fieldset-> addField (
"OStatus"
& # 39; select & # 39 ;,
        [
            'label' => __('Status'),
            'title' => __('Status'),
            'name' => 'ostatus',
            'options' => Status::getAvailableStatuses(),
        ]
    );
$ fieldset-> addField (
& # 39; # 39 ;, & OFFER_NAME
& # 39; Text & # 39 ;,
    [
    'name' => 'offer_name',
    'label' => __('Name'),
    'required' => false
    ]
);
$ fieldset-> addField (
"Highlighted"
& # 39; select & # 39 ;,
        [
            'label' => __('Featured'),
            'title' => __('Featured'),
            'name' => 'featured',
            'options' => Status::getFeatured(),
        ]
    );
$ fieldset-> addField (
& # 39; # 39 ;, & offer_image
& # 39; file & # 39 ;,
        [
            'name' => 'offer_image',
            'label' => __('Offer Image'),
            'id' => 'offer_image',
            'title' => __('Offer Image'),
            'required' => false,
            'after_element_html'=>'Upload max size resolution 400 X 250'
        ]
    );
$ fieldset-> addField (
& # 39; Start Date & # 39 ;,
& # 39; Date & # 39 ;,
        [
            'name' => 'startdate',
            'label' => __('Start Date'),
            'title' => __('Start Date'),
            'required' => false,
            'readonly' => true,
            'date_format' => 'yyyy-MM-dd',              
            'class' => 'validate-date'
        ]
    );
$ fieldset-> addField (
& # 39; # 39 ;, & deadline
& # 39; Date & # 39 ;,
        [
            'name' => 'enddate',
            'label' => __('End Date'),
            'title' => __('End Date'),
            'required' => false,
            'readonly' => true,                
            'date_format' => 'yyyy-MM-dd',              
            'class' => 'validate-date'
        ]
    );
$ fieldset-> addField (
& # 39; # 39 ;, & detail
& # 39; textarea & # 39 ;,
        [
        'name' => 'detail',
        'label' => __('Offer Detail'),
        'required' => false
        ]
    );
$ data = $ model-> getData ();
$ form-> setValues ​​($ data);
$ this-> setForm ($ form);
return parent :: _ prepareForm ();
}
/ **
* Prepare the label for the tab
*
* @return string
* /
public function getTabLabel ()
{
return __ (& quot; offer manager & # 39;);
}
/ **
* Prepare the title for the tab
*
* @return string
* /
public function getTabTitle ()
{
return __ (& quot; offer manager & # 39;);
}
/ **
* {@inheritdoc}
* /
public function canShowTab ()
{
return true;
}
/ **
* {@inheritdoc}
* /
public function isHidden ()
{
return it incorrectly;
}

}