为什么我的ReportView没有显示出来?

雄牛 2016-12-17 09:46:13
在做一个自定义列的报表,代码码和网上一样的,但为什么没有显示出来?只有报表控件的“工具栏”显示?
为什么没有显示我自定义加的"test1"~"test5"这些?


//DataSet1.xsd
建有一个DataSet1.xsd文件,里面有一个自定义Table,表自定名字叫DataSet1,加了很多DataColumn1~DataColumn5,共5个列.没有指定绑定什么.

//CustReport1.rdlc
报表文件加载了上述的DataSet1数据集和表,但报表面板里什么都没放.




//CustReport.aspx前台文件

<rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="100%" Font-Names="Verdana" Font-Size="8pt" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">

</rsweb:ReportViewer>

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>


//CustReport.cs后台文件

public partial class CustReport : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ReportViewer1.Reset();
ReportViewer1.LocalReport.ReportPath = "CustReport1.rdlc";//报表名称
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt()));//对应的xsd数据集文件名
ReportViewer1.LocalReport.Refresh();
}
}

private DataTable dt()
{
DataTable DataTable2 = new DataTable("dt2");
DataTable2.Columns.Add("DataColumn1", typeof(string));
DataTable2.Columns.Add("DataColumn2", typeof(string));
DataTable2.Columns.Add("DataColumn3", typeof(string));
DataTable2.Columns.Add("DataColumn4", typeof(string));
DataTable2.Columns.Add("DataColumn5", typeof(string));

for (int i = 0; i < 5; i++)
{
DataRow dr = DataTable2.NewRow();
dr["DataColumn1"] = "test1" + i.ToString();
dr["DataColumn2"] = "test2" + i.ToString();
dr["DataColumn3"] = "test3" + i.ToString();
dr["DataColumn4"] = "test4" + i.ToString();
dr["DataColumn5"] = "test5" + i.ToString();
DataTable2.Rows.Add(dr);
}
return DataTable2;
}

}
...全文
493 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
雄牛 2016-12-17
  • 打赏
  • 举报
回复
找到原因了,是因为了没在rdlc报表文件是放控件, 但是还有个问题,如果我想动态生成的报表,不想手动在报表上加列名标题,列名标题也打印到报表上,为什么我的代码不显示?

private DataTable dt()
    {
        DataTable DataTable2 = new DataTable("dt2");
        DataTable2.Columns.Add("DataColumn1", typeof(string));
        DataTable2.Columns.Add("DataColumn2", typeof(string));
        DataTable2.Columns.Add("DataColumn3", typeof(string));
        DataTable2.Columns.Add("DataColumn4", typeof(string));
        DataTable2.Columns.Add("DataColumn5", typeof(string));
        DataTable2.Columns.Add("DataColumn6", typeof(string));

        //DataSet.Tables["XX"].Columns["xx"].ColumnName = "NewColumnName";//修改列名

        for (int i = 0; i < 5; i++)
        {
            DataRow dr = DataTable2.NewRow();
            if (i == 0)
            {
                dr["DataColumn1"] = DataTable2.Columns[0].ColumnName;
                dr["DataColumn2"] = DataTable2.Columns[1].ColumnName;
                dr["DataColumn3"] = DataTable2.Columns[2].ColumnName;
                dr["DataColumn4"] = DataTable2.Columns[3].ColumnName;
                dr["DataColumn5"] = DataTable2.Columns[4].ColumnName;
                dr["DataColumn6"] = DataTable2.Columns[5].ColumnName;
                continue;
            }
            dr["DataColumn1"] = "Test" + i.ToString();
            dr["DataColumn2"] = "Test" + i.ToString();
            dr["DataColumn3"] = "Test" + i.ToString();
            dr["DataColumn4"] = "Test" + i.ToString();
            dr["DataColumn5"] = "Test" + i.ToString();
            dr["DataColumn6"] = "Test" + i.ToString();
            DataTable2.Rows.Add(dr);
        }
        return DataTable2;
    }
  • 打赏
  • 举报
回复
引用 1 楼 cowbo 的回复:
但是还有个问题,如果我想动态生成的报表,不想手动在报表上加列名标题,列名标题也打印到报表上,为什么我的代码不显示?
这句话看了好几遍才明白。。。 你不想在rdlc设计表格中添加表头,而是通过datatable来动态实现,是这个意思吧? ==>不行,rdlc的表头是rdlc的表头,datatable的表头是datatable的表头,要想用datatable的表头来传递给rdlc可以通过参数传递,但是rdlc的列数不好通过代码控制,如果有个别固定列数的表格类型,可以设置多个rdlc对应

110,547

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧