I want to make custom grid of items in which status of each item is managed separately in sales order view page in admin. So how to make such grid?

For example this is in maganto 1 but I want to implement same for magento 2. enter image description here

  • Can you specify in more details. Commented Sep 11, 2020 at 6:12
  • off course @Dhiren Vasoya sir. I have updated my question. Please check. Commented Sep 11, 2020 at 7:03

1 Answer 1



<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
       <!-- block -->
       <referenceBlock name="order_additional_info">
           <block class="Magento\Sales\Block\Adminhtml\Order\View\Tab\Info" name="sales_custom_view" template="[Vendor]_[module]::order/view/tab/info.phtml"/>



 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.

/** @var $block \Magento\Sales\Block\Adminhtml\Order\View\Tab\Info */
<?php $_order = $block->getOrder() ?>

<section class="admin__page-section">
   <form id="custom_info_form" action="<?php echo $this->getUrl('orderitem/test/save'); ?>">
<div class="grid np" id="custom_info">
  <div class="hor-scroll">
    <table class="data-grid data-grid-draggable">
            <tr class="headings">
                <th class="data-grid-th _sortable _draggable"><span><?=__('Product') ?></th>
                <th class="data-grid-th _sortable _draggable"><span><?= __('Item Status') ?></span></th>
    <?php foreach($_order->getAllItems() as $_item):?>
               <?php echo $_item->getName(); ?>

               <?php $shippingStatus= "Complete"; ?>

               <select class="admin__control-select" name="shipping_status[<?php echo $_item->getItemId()?> ]" id="shipping_status" value="" title="shipping_status">
                <option selected="selected"><?= __('Choose one') ?></option>
                    <?php $options = array("Pending","Confirmed","Complete","Dues 7 – 10 days","Dues 2 – 3 weeks","Dues no date","Refunded","Cancelled","Failed");?>

                    <?php foreach($options as $option) : ?>
                <option value="<?php echo strtolower($option); ?>"><?php echo $option; ?></option>
                    <?php endforeach; ?>
       <?php endforeach; ?>

            <button type="button" name="button_shipstatus" value=""  onclick="submitCustomform()" class="action-default scalable action-save action-secondary">
          <span><?= __('Submit') ?></span>
<?php $order_id=$_order->getId(); ?>
            function submitSupplierInfo()
                var saveUrl = '<?php echo $this->getUrl('orderitem/test/save'); ?>';
                var request = new Ajax.Request(
                        method: 'post',
                        onSuccess: supplierInfoResp,
                        parameters: Form.serialize($('custom_info_form')),


            function supplierInfoResp(transport)
                if (transport && transport.responseText) {
                    try {
                        response = eval('(' + transport.responseText + ')');
                    catch (e) {
                        response = {};


For saving data make controller for it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.