protected virtual KeyValuePair <string, byte[]> ExportData(
            [DataSourceRequest] DataSourceRequest request,
            string searchQueryId,
            ExportFactory.ExportType type,
            string firstLevelName  = null,
            string secondLevelName = null)
        {
            request          = request ?? new DataSourceRequest();
            request.PageSize = 0;

            var result = GetSelectedItems(searchQueryId);

            if (result.IsNullOrEmpty())
            {
                result = GetFindResult(searchQueryId);
            }

            var data = InitGridData(request, result);

            if (data.IsNullOrEmpty())
            {
                throw new WarningException(resource.Get("NoDataFound") ?? "No data found");
            }

            var extension = ExportFactory.GetFileExtensionByType(type);
            var fileName  = $"{(Title.IsNotNullOrEmpty() ? Title : "export")}-{DateTime.Now:d}.{extension}";

            var exporter = ExportFactory.CreateExport(type);
            var blob     = exporter.Export(data, firstLevelName, secondLevelName);

            return(new KeyValuePair <string, byte[]>(fileName, blob));
        }
        public virtual FileResult Export(
            [DataSourceRequest] DataSourceRequest request,
            string searchQueryId,
            ExportFactory.ExportType type)
        {
            var data = ExportData(request, searchQueryId, type);

            return(File(
                       data.Value,
                       MimeMapping.GetMimeMapping(data.Key),
                       data.Key));
        }