#c# #asp.net-mvc #asp.net-core #asp.net-core-mvc #rdlc
#c# #asp.net-mvc #asp.net-core #asp.net-ядро-mvc #rdlc
Вопрос:
Я создал средство просмотра отчетов в своем проекте .net core. здесь я создаю форму Windows для создания отчета. Я хочу что-то вроде этого: — сначала я собираю свои данные из сеанса, затем эти собранные данные проходят через мой просмотрщик отчетов и хотят показать этот отчет на моем рабочем столе. но когда я попробовал это сделать, я обнаружил много разных ошибок.
вот мой код:-
public async Task<IActionResult> Print()
{
string mimetype = "";
int extension = 1;
var path = $"{this._webHostEnvironment.WebRootPath}\Reports\Report1.rdlc";
Dictionary<string, string> parameters = new Dictionary<string, string>();
List<Shop> shop = HttpContext.Session.Get<List<Shop>>("shop");
for(int i=0;i<shop.Count();i )
{
parameters.Add("Name", shop[i].Name);
parameters.Add("Quantity", shop[i].Quantity);
parameters.Add("ProductId", shop[i].Id);
parameters.Add("Price", shop[i].Price);
}
LocalReport localReport = new LocalReport(path);
var result = localReport.Execute(RenderType.Pdf, extension, parameters, mimetype);
var r = File(result.MainStream, "application/pdf");
return View(r);
}
Report1.rdlc:-
1.Name (Текст, разрешить нулевое значение, Разрешить множественное значение) 2.Идентификатор продукта (Intiger, допускает несколько значений) 3.Цена (Intiger, разрешить несколько значений) 4.(Intiger, Количество (разрешить несколько значений)
Я обнаружил неожиданную ошибку:-
но я хочу, чтобы мой отчет о данных отображался на моем рабочем столе. каково же решение проблемы? Я все еще новичок. пожалуйста, помогите.
Комментарии:
1. Я думаю, для начала убрать кавычки из параметров parameters.Add(«Name», «shop[i].Name»); должны быть parameters.Add(«Name», shop[i].Name);
2. в чем теперь ошибка?
3. Я считаю, что вы должны пользоваться этой
DataSource
собственностью. Вы объявили параметры как aDictionary
, но затем пытаетесь добавить несколько элементов с одинаковыми ключами. Это не сработает. Исследуйте использованиеDataSource
вместо этого.
Ответ №1:
Частью процесса обучения программированию является обучение считыванию ошибок. посмотрите, где указано, что вы не можете добавить одно и то же значение name 2x
Кроме того, вы выполняете асинхронные задачи, но в вашем коде нет ожидания. просто удалите это из заголовка метода
public IActionResult Print() { string mimetype = «»; int extension = 1; var path = $»{это._ Окружающая среда веб-хостинга.WebRootPath}ReportsReport1.rdlc»; Словарь<строка, строка> параметры = новый словарь<строка, строка>();
List<Shop> shop = HttpContext.Session.Get<List<Shop>>("shop");
for(int i=0;i<shop.Count();i )
{
parameters.AddWithValue("Name", shop[i].Name);
parameters.AddWithValue("Quantity", shop[i].Quantity);
parameters.AddWithValue("ProductId", shop[i].Id);
parameters.AddWithValue("Price", shop[i].Price);
}
LocalReport localReport = new LocalReport(path);
var result = localReport.Execute(RenderType.Pdf, extension, parameters, mimetype);
var r = File(result.MainStream, "application/pdf");
return View(r);
}
Комментарии:
1. Не работает. Я скопировал и вставил ваш код. но обнаружил ошибку ниже моих «параметров».
2. какой тип данных я должен использовать для «параметров»?
3. Я предполагаю, что у вас есть SqlParameter, чем вам нужно AddWithValue, docs.microsoft.com/en-us/dotnet/api /…