Grid Row Total issue in exported CSV - Magento 2
I am facing an issue in My custom grid. I have added 'Export to CSV' in Grid and it is working fine.
Issue is I have added a row total in grid but in Exported CSV, total is actually the total of all rows rather then the total of filtered rows.
I am using a below code to add the Total row for a specific column. This code is working in Grid Block but not working in GridExport Block.
protected function _afterLoadCollection()
{
$collection = $this->getCollection();
$salesTotal = 0;
foreach ($collection as $rowData) {
$salesTotal += (float)$rowData->getPrice() * (float)$rowData->getQuantity();
}
$this->setTotals(new MagentoFrameworkDataObject(
array( 'subtotal'=>$salesTotal )
));
return $this;
}
It seems that, _afterLoadCollection() never call in GridExport Block although both Blocks are extending the same class as
class Grid extends MagentoBackendBlockWidgetGridExtended { ... }
class GridExport extends MagentoBackendBlockWidgetGridExtended { ... }
Grid and CSV samples are attached for reference.
Grid
CSV
grid export magento2
migrated from stackoverflow.com Dec 2 at 2:12
This question came from our site for professional and enthusiast programmers.
add a comment |
I am facing an issue in My custom grid. I have added 'Export to CSV' in Grid and it is working fine.
Issue is I have added a row total in grid but in Exported CSV, total is actually the total of all rows rather then the total of filtered rows.
I am using a below code to add the Total row for a specific column. This code is working in Grid Block but not working in GridExport Block.
protected function _afterLoadCollection()
{
$collection = $this->getCollection();
$salesTotal = 0;
foreach ($collection as $rowData) {
$salesTotal += (float)$rowData->getPrice() * (float)$rowData->getQuantity();
}
$this->setTotals(new MagentoFrameworkDataObject(
array( 'subtotal'=>$salesTotal )
));
return $this;
}
It seems that, _afterLoadCollection() never call in GridExport Block although both Blocks are extending the same class as
class Grid extends MagentoBackendBlockWidgetGridExtended { ... }
class GridExport extends MagentoBackendBlockWidgetGridExtended { ... }
Grid and CSV samples are attached for reference.
Grid
CSV
grid export magento2
migrated from stackoverflow.com Dec 2 at 2:12
This question came from our site for professional and enthusiast programmers.
add a comment |
I am facing an issue in My custom grid. I have added 'Export to CSV' in Grid and it is working fine.
Issue is I have added a row total in grid but in Exported CSV, total is actually the total of all rows rather then the total of filtered rows.
I am using a below code to add the Total row for a specific column. This code is working in Grid Block but not working in GridExport Block.
protected function _afterLoadCollection()
{
$collection = $this->getCollection();
$salesTotal = 0;
foreach ($collection as $rowData) {
$salesTotal += (float)$rowData->getPrice() * (float)$rowData->getQuantity();
}
$this->setTotals(new MagentoFrameworkDataObject(
array( 'subtotal'=>$salesTotal )
));
return $this;
}
It seems that, _afterLoadCollection() never call in GridExport Block although both Blocks are extending the same class as
class Grid extends MagentoBackendBlockWidgetGridExtended { ... }
class GridExport extends MagentoBackendBlockWidgetGridExtended { ... }
Grid and CSV samples are attached for reference.
Grid
CSV
grid export magento2
I am facing an issue in My custom grid. I have added 'Export to CSV' in Grid and it is working fine.
Issue is I have added a row total in grid but in Exported CSV, total is actually the total of all rows rather then the total of filtered rows.
I am using a below code to add the Total row for a specific column. This code is working in Grid Block but not working in GridExport Block.
protected function _afterLoadCollection()
{
$collection = $this->getCollection();
$salesTotal = 0;
foreach ($collection as $rowData) {
$salesTotal += (float)$rowData->getPrice() * (float)$rowData->getQuantity();
}
$this->setTotals(new MagentoFrameworkDataObject(
array( 'subtotal'=>$salesTotal )
));
return $this;
}
It seems that, _afterLoadCollection() never call in GridExport Block although both Blocks are extending the same class as
class Grid extends MagentoBackendBlockWidgetGridExtended { ... }
class GridExport extends MagentoBackendBlockWidgetGridExtended { ... }
Grid and CSV samples are attached for reference.
Grid
CSV
grid export magento2
grid export magento2
asked Nov 22 at 11:26
Zulqarnain Abdul Jabbar
61
61
migrated from stackoverflow.com Dec 2 at 2:12
This question came from our site for professional and enthusiast programmers.
migrated from stackoverflow.com Dec 2 at 2:12
This question came from our site for professional and enthusiast programmers.
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
I have resolved the issue. There are basically 2 functions in Extended Grid Block
namespace MagentoBackendBlockWidgetGrid;
// other stuff
class Extended extends MagentoBackendBlockWidgetGrid implements MagentoBackendBlockWidgetGridExportInterface
{
// other code
public function getCsvFile()
{
// doesn't call _afterLoadCollection() function
}
// other code
public function getCsv()
{
$csv = '';
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection(); // That I needed
// ...
}
// ...
}
So I have used getCsv() function in my Controller as:
public function execute()
{
$resultPage = $this->_resultPageFactory->create();
$fileName = 'Referral_'. date('Y-m-d h:i:s') . '.csv';
$exportBlock = $resultPage->getLayout()
->createBlock(
'VendorModuleBlockAdminhtmlReferralsGridExport'
);
return $this->_fileFactory->create(
$fileName,
$exportBlock->getCsv(), // this fucntion
DirectoryList::VAR_DIR
);
}
Although, I am not sure what's the difference between getCsv() and getCsvFile()
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f252097%2fgrid-row-total-issue-in-exported-csv-magento-2%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I have resolved the issue. There are basically 2 functions in Extended Grid Block
namespace MagentoBackendBlockWidgetGrid;
// other stuff
class Extended extends MagentoBackendBlockWidgetGrid implements MagentoBackendBlockWidgetGridExportInterface
{
// other code
public function getCsvFile()
{
// doesn't call _afterLoadCollection() function
}
// other code
public function getCsv()
{
$csv = '';
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection(); // That I needed
// ...
}
// ...
}
So I have used getCsv() function in my Controller as:
public function execute()
{
$resultPage = $this->_resultPageFactory->create();
$fileName = 'Referral_'. date('Y-m-d h:i:s') . '.csv';
$exportBlock = $resultPage->getLayout()
->createBlock(
'VendorModuleBlockAdminhtmlReferralsGridExport'
);
return $this->_fileFactory->create(
$fileName,
$exportBlock->getCsv(), // this fucntion
DirectoryList::VAR_DIR
);
}
Although, I am not sure what's the difference between getCsv() and getCsvFile()
add a comment |
I have resolved the issue. There are basically 2 functions in Extended Grid Block
namespace MagentoBackendBlockWidgetGrid;
// other stuff
class Extended extends MagentoBackendBlockWidgetGrid implements MagentoBackendBlockWidgetGridExportInterface
{
// other code
public function getCsvFile()
{
// doesn't call _afterLoadCollection() function
}
// other code
public function getCsv()
{
$csv = '';
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection(); // That I needed
// ...
}
// ...
}
So I have used getCsv() function in my Controller as:
public function execute()
{
$resultPage = $this->_resultPageFactory->create();
$fileName = 'Referral_'. date('Y-m-d h:i:s') . '.csv';
$exportBlock = $resultPage->getLayout()
->createBlock(
'VendorModuleBlockAdminhtmlReferralsGridExport'
);
return $this->_fileFactory->create(
$fileName,
$exportBlock->getCsv(), // this fucntion
DirectoryList::VAR_DIR
);
}
Although, I am not sure what's the difference between getCsv() and getCsvFile()
add a comment |
I have resolved the issue. There are basically 2 functions in Extended Grid Block
namespace MagentoBackendBlockWidgetGrid;
// other stuff
class Extended extends MagentoBackendBlockWidgetGrid implements MagentoBackendBlockWidgetGridExportInterface
{
// other code
public function getCsvFile()
{
// doesn't call _afterLoadCollection() function
}
// other code
public function getCsv()
{
$csv = '';
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection(); // That I needed
// ...
}
// ...
}
So I have used getCsv() function in my Controller as:
public function execute()
{
$resultPage = $this->_resultPageFactory->create();
$fileName = 'Referral_'. date('Y-m-d h:i:s') . '.csv';
$exportBlock = $resultPage->getLayout()
->createBlock(
'VendorModuleBlockAdminhtmlReferralsGridExport'
);
return $this->_fileFactory->create(
$fileName,
$exportBlock->getCsv(), // this fucntion
DirectoryList::VAR_DIR
);
}
Although, I am not sure what's the difference between getCsv() and getCsvFile()
I have resolved the issue. There are basically 2 functions in Extended Grid Block
namespace MagentoBackendBlockWidgetGrid;
// other stuff
class Extended extends MagentoBackendBlockWidgetGrid implements MagentoBackendBlockWidgetGridExportInterface
{
// other code
public function getCsvFile()
{
// doesn't call _afterLoadCollection() function
}
// other code
public function getCsv()
{
$csv = '';
$this->_isExport = true;
$this->_prepareGrid();
$this->getCollection()->getSelect()->limit();
$this->getCollection()->setPageSize(0);
$this->getCollection()->load();
$this->_afterLoadCollection(); // That I needed
// ...
}
// ...
}
So I have used getCsv() function in my Controller as:
public function execute()
{
$resultPage = $this->_resultPageFactory->create();
$fileName = 'Referral_'. date('Y-m-d h:i:s') . '.csv';
$exportBlock = $resultPage->getLayout()
->createBlock(
'VendorModuleBlockAdminhtmlReferralsGridExport'
);
return $this->_fileFactory->create(
$fileName,
$exportBlock->getCsv(), // this fucntion
DirectoryList::VAR_DIR
);
}
Although, I am not sure what's the difference between getCsv() and getCsvFile()
answered Nov 23 at 16:47
Zulqarnain Abdul Jabbar
61
61
add a comment |
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f252097%2fgrid-row-total-issue-in-exported-csv-magento-2%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown