Мне нужно сгенерировать отчет на странице .aspx через Crystal Report, в моем отчете есть разные таблицы. Для этого я выполняю следующие шаги:
- Мастер создания стандартных отчетов в ASP Веб-приложение в Visual Studio
- Добавить набор данных с таблицей данных со столбцами (то же имя, что и имя столбца в SQL query)
- Перетащите имена столбцов в «Разделе сведений» (он автоматически добавит то же, что и заголовок в разделе «Заголовок страницы».
- Перетащите раздел 4, чтобы упорядочить все данные в разделе Details
- Для столбцов, занимающих большую площадь, увеличьте свою высоту, все форматирование, включая стили шрифтов, выравнивание текстовых ячеек, размер столбца и т. д. c, легко форматируется.
- Для разных частей данных (маленькие таблицы и c), используются вспомогательные отчеты
testpage.aspx
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Back to Input Page" />
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" ToolPanelView="None" />
testpage.aspx.cs
public partial class testpage : System.Web.UI.Page
{
string ticketgotsession, query;
string conString = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
ticketgotsession = Session["ticketno"].ToString();
ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(Server.MapPath("~/Crystest4.rpt"));
//All different queries combined in 1 query & stored in Dataset obj t1
test1 t1 = GetQ1("select c1,c2,c3.....c30
from table1
inner join table2 on ___
inner join table3 on ___
inner join table4 on ___
where cr.ref_num='" + ticketgotsession + "'");
crystalReport.SetDataSource(t1);
CrystalReportViewer1.ReportSource = crystalReport;
}
private test1 GetQ1(string query)
{
SqlCommand cmd1 = new SqlCommand(query);
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlDataAdapter sda1 = new SqlDataAdapter())
{
cmd1.CommandType = CommandType.Text;
cmd1.Connection = con;
sda1.SelectCommand = cmd1;
using (test1 t1 = new test1())
{ //DataTable4 was empty table of dataset test1 with Exactly same name as all Col names in the query
sda1.Fill(t1,"DataTable4");
return t1;
}
}
}
}
Ниже представлен отчет, созданный на данный момент (обведен кругом: границы ячеек для ячеек, созданных с помощью линий вручную, данные превышают 1 ячейку или иногда они накладываются на другое содержимое).
Ссылки также упоминались: автоматическая регулировка размера с использованием таблиц данных и Использование Tight Horizontal
Однако, после многих экспериментов, ниже наблюдалась Может расти & Тесно по горизонтали feature:
«Когда могут расти и плотно по горизонтали, оба включены, тогда столбцы расширяются по вертикали, но не по горизонтали, текст не усечен "
" Если включена функция Tight Horizontal, граница будет обрезана, чтобы соответствовать размеру каждой отдельной записи. "
Но ничего не сработало.
Поскольку в asp. net есть Grid View, который динамически выравнивает данные в табличном макете, я ищу аналогичную функцию в Crystal Report , поэтому я не нужно перетащить каждое поле данных, затем изменить размер, установить границы каждого из них вручную.
Заранее спасибо !!