Magento 2 कस्टम ग्रिड स्तंभ क्रम क्रम


20

मैंने UI घटक का उपयोग करके Magento के व्यवस्थापक में एक कस्टम ग्रिड बनाया। मूल रूप से, सभी ठीक काम कर रहे हैं, इसके अलावा स्तंभों का क्रम सही नहीं दिखा रहा है। यहां छवि विवरण दर्ज करें

  • जैसा कि आप देख सकते हैं कि एक्शन कॉलम शुरुआत में सही है और चयनित अंत में है
  • जब मैंने XML में कॉलम बनाए तो मैंने sortOrderप्रत्येक कॉलम की विशेषता को ध्यान में रखा , लेकिन किसी भी तरह आदेश वह नहीं है जिसे मैंने सेट किया था

listing.xmlनिम्नलिखित में से कोड है

<columns name="inactive_columns" class="Module\MyModule\Ui\Component\Listing\Columns">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="storageConfig" xsi:type="array">
                <item name="provider" xsi:type="string">inactive_listing.inactive_listing.listing_top.bookmarks</item>
                <item name="namespace" xsi:type="string">current</item>
            </item>
            <item name="editorConfig" xsi:type="array">
                <item name="selectProvider" xsi:type="string">inactive_listing.inactive_listing.inactive_columns.ids</item>
                <item name="enabled" xsi:type="boolean">true</item>
                <item name="indexField" xsi:type="string">entity_id</item>
                <item name="clientConfig" xsi:type="array">
                    <item name="saveUrl" xsi:type="url" path="customer/index/inlineEdit"/>
                    <item name="validateBeforeSave" xsi:type="boolean">false</item>
                </item>
            </item>
            <item name="childDefaults" xsi:type="array">
                <item name="fieldAction" xsi:type="array">
                    <item name="provider" xsi:type="string">inactive_listing.inactive_listing.inactive_columns_editor</item>
                    <item name="target" xsi:type="string">startEdit</item>
                    <item name="params" xsi:type="array">
                        <item name="0" xsi:type="string">${ $.$data.rowIndex }</item>
                        <item name="1" xsi:type="boolean">true</item>
                    </item>
                </item>
                <item name="storageConfig" xsi:type="array">
                    <item name="provider" xsi:type="string">inactive_listing.inactive_listing.listing_top.bookmarks</item>
                    <item name="root" xsi:type="string">columns.${ $.index }</item>
                    <item name="namespace" xsi:type="string">current.${ $.storageConfig.root }</item>
                </item>
            </item>
        </item>
    </argument>
    <selectionsColumn name="ids">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="indexField" xsi:type="string">entity_id</item>
                <item name="sortOrder" xsi:type="number">0</item>
            </item>
        </argument>
    </selectionsColumn>
    <column name="entity_id">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">textRange</item>
                <item name="sorting" xsi:type="string">asc</item>
                <item name="label" xsi:type="string" translate="true">ID</item>
                <item name="sortOrder" xsi:type="number">20</item>
            </item>
        </argument>
    </column>
    <column name="firstname">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Firstname</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="sortOrder" xsi:type="number">40</item>
            </item>
        </argument>
    </column>
    <column name="lastname">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Lastname</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="sortOrder" xsi:type="number">50</item>
            </item>
        </argument>
    </column>
    <column name="email">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Email Cacat</item>
                <item name="sortOrder" xsi:type="number">30</item>
            </item>
        </argument>
    </column>
    <column name="group_id">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">select</item>
                <item name="editor" xsi:type="string">select</item>
                <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item>
                <item name="dataType" xsi:type="string">select</item>
                <item name="label" xsi:type="string" translate="true">Group</item>
                <item name="sortOrder" xsi:type="number">90</item>
            </item>
        </argument>
    </column>
    <column name="billing_telephone">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="editor" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Phone</item>
                <item name="sortOrder" xsi:type="number">100</item>
            </item>
        </argument>
    </column>
    <column name="created_at" class="Magento\Ui\Component\Listing\Columns\Date">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">dateRange</item>
                <item name="dataType" xsi:type="string">date</item>
                <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
                <item name="label" xsi:type="string" translate="true">Customer Since</item>
                <item name="sortOrder" xsi:type="number">110</item>
            </item>
        </argument>
    </column>
    <column name="last_visit_at" class="Magento\Ui\Component\Listing\Columns\Date">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_Ui/js/grid/columns/date</item>
                <item name="filter" xsi:type="string">dateRange</item>
                <item name="visible" xsi:type="boolean">false</item>
                <item name="dataType" xsi:type="string">date</item>
                <item name="label" xsi:type="string" translate="true">Last Logged In</item>
                <item name="sortOrder" xsi:type="number">120</item>
            </item>
        </argument>
    </column>
    <column name="created_in">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="visible" xsi:type="boolean">false</item>
                <item name="label" xsi:type="string" translate="true">Account Created in</item>
                <item name="sortOrder" xsi:type="number">140</item>
            </item>
        </argument>
    </column>
    <column name="kpi_views_customer">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Kpi Views</item>
                <item name="sortOrder" xsi:type="number">60</item>
            </item>
        </argument>
    </column>
    <column name="customer_membership">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Customer Membership</item>
                <item name="sortOrder" xsi:type="number">70</item>
            </item>
        </argument>
    </column>
    <column name="customer_access">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="filter" xsi:type="string">text</item>
                <item name="label" xsi:type="string" translate="true">Customer Access</item>
                <item name="sortOrder" xsi:type="number">80</item>
            </item>
        </argument>
    </column>
    <actionsColumn name="actions" class="Magento\Customer\Ui\Component\Listing\Column\Actions">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="indexField" xsi:type="string">entity_id</item>
                <item name="sortOrder" xsi:type="number">222</item>
            </item>
        </argument>
    </actionsColumn>
</columns> 

और वर्ग मॉड्यूल \ MyModule \ Ui \ Component \ Listing \ Columns है

class Columns extends \Magento\Ui\Component\Listing\Columns
{

/**
 * @var \KPIs\CustomerReports\Model\Customer\Attribute\Repository\AttributeRepository $attributeRepository
 */
protected $attributeRepository;

protected $manageAttributes;

/** @var int */
protected $columnSortOrder;

public function __construct(
    ContextInterface $context,
    ColumnFactory $columnFactory,
    AttributeRepository $attributeRepository,
    ManageAttributes $manageAttributes,
    InlineEditUpdater $inlineEditor,
    array $components = [],
    array $data = []
)
{
    parent::__construct($context, $components, $data);
    $this->columnFactory = $columnFactory;
    $this->attributeRepository = $attributeRepository;
    $this->manageAttributes = $manageAttributes;
    $this->inlineEditUpdater = $inlineEditor;
}

public function prepareDataSource(array $dataSource)
{
    $customerAccessOptions = $this->attributeRepository->get(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, "customer_access")->getOptions();
    $customerMembershipOptions = $this->attributeRepository->get(CustomerMetadataInterface::ENTITY_TYPE_CUSTOMER, "customer_membership")->getOptions();
    if (isset($dataSource['data']['items'])) {
        foreach ($dataSource['data']['items'] as & $item) {
            if (isset($item["customer_access"])) {
                $item["customer_access"][0] = $customerAccessOptions[$item["customer_access"][0]]->getLabel();
            }
            if (isset($item["customer_membership"])) {
                $item["customer_membership"] = $customerMembershipOptions[$item["customer_membership"][0]]->getLabel();
            }
        }
    }
    return $dataSource;
}
}
  • जैसा कि आप देख सकते हैं, कक्षा में मैं कुछ भी संबंधित नहीं कर रहा हूँअब संबंधित :), इसलिए यह डिफ़ॉल्ट व्यवहार होना चाहिए
  • इसके अलावा, कार्रवाई और चयन कॉलम को खींचा और गिराया नहीं जा सकता है (जहाँ तक मैंने देखा)

क्या किसी को कोई पता नहीं है कि मैं XML से या कोड से कॉलम कैसे सॉर्ट कर सकता हूं? कार्रवाई अंतिम कॉलम और चयन पहले वाला होना चाहिए। धन्यवाद! :)


2
ग्रिड में कॉलम को खींचने और छोड़ने की कोशिश करें
कीउर शाह

मैंने कोशिश की कि पहले से ही, यह एक्शन और चयन कॉलम के साथ काम नहीं कर रहा है
ड्रैगोस

जवाबों:


53

इस समाधान की कोशिश करो

  1. ग्रिड में कॉलम को सॉर्ट करने के लिए नीचे की रेखा का उपयोग करें।

    <item name="sortOrder" xsi:type="number">6</item>
  2. आप डेटाबेस तालिका ui_bookmark खोलें ।

  3. से अपने UIComponent के नाम खोजें namespce के स्तंभ ui_bookmark तालिका । आप संबंधित लेआउट xml से uiComponent नाम की जांच कर सकते हैं। नीचे सिर्फ एक उदाहरण पथ है।

    /app/code/Vendor/Module/view/adminhtml/layout/module__controller_index.xml
  4. अब ui_bookmark टेबल से मिलने वाले रिकॉर्ड को डिलीट करें।

  5. कैशे साफ़ करें

    php bin/magento cache:flush
    
    php bin/magento cache:clean

बस इतना ही। का आनंद लें!


हाँ, यह सही जवाब है। धन्यवाद! :)
Dragos

7
काम करता है, लेकिन यह जानना अच्छा होगा कि इसे सीधे डेटाबेस हेरफेर के बिना कैसे ताज़ा किया जाए।
वोल्वोक्स

यह मिंट की तरह काम करता है :)
प्रवीण नेगीमानी

यदि कोडिंग में इसे ठीक से सेट किया गया है तो एडमिन लॉगआउट / लॉगिन अपने आदेश को रिफ्रेश कर सकता है।
एग्लॉक्स

5

Magento2 में ui ग्रिड के लिए कॉलम आदेश तालिका में संग्रहीत किया जा रहा है ui_bookmark

स्तंभ के लिए namespaceआप ग्रिड नाम और पहचानकर्ता के लिए = currentआपको configस्तंभ मान बदलना चाहिए । आप पंक्ति, पैरामीटर "स्थिति" के हर छोर में कॉलम ऑर्डर पा सकते हैं: {}


सच में मेरी पूरी मदद करो! यह काम कर रहा है समाधान। मैंने वर्तमान और डिफ़ॉल्ट दोनों दृश्य हटा दिए हैं इसलिए अब यह ठीक काम कर रहा है जैसा मैं चाहता हूं।
भूपेंद्र जडेजा

2

आपको पहले आपका "मॉड्यूल.एक्सएमएल" जांचना होगा और कोड ढूंढना होगा। उदाहरण :

और जाँच करें कि आपके मॉड्यूल के ऑर्डर को लोड होने से पहले या उसके बाद लोड किया जाना चाहिए या मॉड्यूल लोड ऑर्डर पर निर्भर है या अपनी आवश्यकता के अनुसार अपने मॉड्यूल लोड को सुनिश्चित करें।

आप अपने मॉड्यूल लोड ऑर्डर आदि की जांच कर सकते हैं-> config.xml फ़ाइल।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.