Generate/Create RDLC Dynamically
GotReportViewer http://www.gotreportviwer.com/
Generate RDLC dynamically (great)
namespace DynamicTable
{
public partial class Form1 : Form
{
private DataSet m_dataSet;
private MemoryStream m_rdl;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
OpenDataFile("test.xml", false);
}
private void ShowReport()
{
this.reportViewer1.Reset();
this.reportViewer1.LocalReport.LoadReportDefinition(m_rdl);
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("MyData", m_dataSet.Tables[0]));
this.reportViewer1.RefreshReport();
}
private MemoryStream GenerateRdl(List<string> allFields, List<string> selectedFields)
{
MemoryStream ms = new MemoryStream();
RdlGenerator gen = new RdlGenerator();
gen.AllFields = allFields;
gen.SelectedFields = selectedFields;
gen.WriteXml(ms);
ms.Position = 0;
return ms;
}
private void DumpRdl(MemoryStream rdl)
{
using (FileStream fs = new FileStream(@"c:\test.rdlc", FileMode.Create))
{
rdl.WriteTo(fs);
}
}
private List<string> GetAvailableFields()
{
DataTable dataTable = m_dataSet.Tables[0];
List<string> availableFields = new List<string>();
for (int i = 0; i < dataTable.Columns.Count; i++)
{
availableFields.Add(dataTable.Columns[i].ColumnName);
}
return availableFields;
}
private void OpenDataFile(string filename, bool showOptionsDialog)
{
try
{
m_dataSet = new DataSet();
m_dataSet.ReadXml(filename);
List<string> allFields = GetAvailableFields();
ReportOptionsDialog dlg = new ReportOptionsDialog(allFields);
if (showOptionsDialog)
{
if (dlg.ShowDialog() != DialogResult.OK)
return;
}
List<string> selectedFields = dlg.GetSelectedFields();
if (m_rdl != null)
m_rdl.Dispose();
m_rdl = GenerateRdl(allFields, selectedFields);
DumpRdl(m_rdl);
ShowReport();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
OpenDataFile(openFileDialog1.FileName, true);
}
}
}
}
http://www.cnblogs.com/waxdoll/archive/2007/02/09/dynamic_serverreport_reportserver_database.html
http://spacefold.com/lisa/post/2008/05/25/Walkthrough-A-Simple-ish-Runtime-Quick-Report.aspx
http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition/ReportDefinition.xsd
http://spacefold.com/lisa/post/2009/07/26/YAPS-about-Dynamic-Layouts.aspx
http://www.codeproject.com/KB/reporting-services/DynamicReport.aspx
http://www.wangchao.net.cn/bbsdetail_546410.html (great)
http://www.cnblogs.com/wdxinren/archive/2006/08/23/484123.html (great)
http://blog.csdn.net/lgjlry/archive/2008/12/10/3492914.aspx (great)
http://www.pin5i.com/showtopic.aspx?topicid=19621&forumpage=1&onlyauthor=1
http://www.ureader.com/msg/115712546.aspx (great)
http://yorozuya.exeexe.net/vbdotnet_fyireporting/rdl0010.html (great)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2008-10-02 Adding empty space into SQL Server Reporting Services
2007-10-02 How to add an image on reportViewer (rdlc)
2007-10-02 SQL Server 2005 数据库对象命名规范 Database Naming Conventions(Guidelines)