

//多个参数传递:
private ReportParameter[] p = null;
/// <summary>
/// 成绩报表
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnGradeRPT_Click(object sender, EventArgs e)
{
this.ReportViewer1.Visible = false;
DataTable dt3 = studentBll.GetStudentXhXmId(" and bh = '" + txtBh.Text.Trim() + "' order by xh");
if (dt3.Rows.Count > 0)
{
DataTable dt4 = GetStudentRegesterBook(30, dt3);
this.ReportViewer2.Visible = true;
ReportDataSource Source = new ReportDataSource("DataSet10_DataTable1", dt4);
this.ReportViewer2.LocalReport.DataSources.Clear();
this.ReportViewer2.LocalReport.DataSources.Add(Source);
this.ReportViewer2.LocalReport.SetParameters(GetParams(dt3));
this.ReportViewer2.LocalReport.Refresh();
}
else
{
ScriptManager.RegisterStartupScript(this.btnGradeRPT, this.GetType(), "NoRecord", "alert('没有该班学
生!')", true);
}
}
private ReportParameter[] GetParams(DataTable dt)
{
string title = "(" + this.hidXn.Value + "年 " + this.hidXq.Value + ")";
string[] str1 = this.ddlstCourseCode.SelectedValue.Split('|');
string[] str2 = new string[5];
if (str1.Length == 5)
{
p = new ReportParameter[7];
for (int i = 0; i < 5; i++)
{
if (!str1[i].Equals("-1"))
{
str2[i] = str1[i];
}
else
{
str2[i] = "";
}
}
p[0] = new ReportParameter("title", title);
p[1] = new ReportParameter("kkdw", "开课单位:" + str2[0]);
p[2] = new ReportParameter("kcmc", "课程名称:" + str2[1]);
p[3] = new ReportParameter("xs", "学时:" + str2[2]);
p[4] = new ReportParameter("xf", "学分:" + str2[3]);
p[5] = new ReportParameter("jsxm", "教师姓名:" + str2[4]);
p[6] = new ReportParameter("total", "人数:" + dt.Rows.Count.ToString());
}
return p;
}
/// <summary>
/// 两列转换为四列
/// </summary>
/// <param name="pagesize">每页大小</param>
/// <param name="table"></param>
/// <returns></returns>
private DataTable GetStudentRegesterBook(int pagesize,DataTable table)
{
DataTable dt = new DataTable();
int rows = table.Rows.Count;
if (rows > 0)
{
dt.Columns.Add("xh1", typeof(string));
dt.Columns.Add("xm1", typeof(string));
dt.Columns.Add("xh2", typeof(string));
dt.Columns.Add("xm2", typeof(string));
int pagecount = 0;
pagecount = rows / pagesize;
if (pagecount * pagesize < rows)
pagecount = pagecount + 1;
int i, j, k;
//考虑前pagecount-1页
if (rows > 0)
{
for (i = 0; i < pagecount - 1; i++)
{
if (i % 2 == 0)
{
for (j = 0; j < pagesize; j++)
{
DataRow dr = dt.NewRow();
dr["xh1"] = table.Rows[j + i * pagesize]["xh"].ToString();
dr["xm1"] = table.Rows[j + i * pagesize]["xm"].ToString();
dt.Rows.Add(dr);
}
}
else
{
for (k = 0; k < pagesize; k++)
{
dt.Rows[k + (i / 2) * pagesize]["xh2"] = table.Rows[k + i * pagesize]["xh"].ToString();
dt.Rows[k + (i / 2) * pagesize]["xm2"] = table.Rows[k + i * pagesize]["xm"].ToString();
}
}
}
//考虑最后一页
//奇数页
if (pagecount % 2 == 1)
{
for (k = 0; k < rows - (pagecount - 1) * pagesize; k++)
{
DataRow dr = dt.NewRow();
dr["xh1"] = table.Rows[k + i * pagesize]["xh"].ToString();
dr["xm1"] = table.Rows[k + i * pagesize]["xm"].ToString();
dt.Rows.Add(dr);
}
}
else
{
//偶数页
for (k = 0; k < rows - (pagecount - 1) * pagesize; k++)
{
dt.Rows[k + (i / 2) * pagesize]["xh2"] = table.Rows[k + i * pagesize]["xh"].ToString();
dt.Rows[k + (i / 2) * pagesize]["xm2"] = table.Rows[k + i * pagesize]["xm"].ToString();
}
}
}
}
return dt;
}
//单个参数传递:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.Reporting.WebForms;
using XNCJWC.BLL;
namespace XNCJWC.Web
{
public partial class manager_GradeManage_GradeQueryClassRPT : System.Web.UI.Page
{
private xscjBLL xscjBll = new xscjBLL();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string xn=Request.QueryString["xn"];
string xq=Request.QueryString["xq"];
string bh=Request.QueryString["bh"];
string kc=Server.UrlDecode(Request.QueryString["kc"]);
string[] str=new string[2];
str = kc.Split('-');
DataTable table = new DataTable();
string strWhere =" xn = '"+xn+"' and xq='"+xq+"' and kcbh like '%"+str[0]+"%'" ;
string strBh = " bh like '" + bh + "%'";
string oxq = "";
if (xq == "1")
{
oxq = "春季学期";
}
else
{
oxq = "秋季学期";
}
table = xscjBll.GetZxXsGrade(strBh, strWhere);
this.ReportViewer1.Visible = true;
ReportDataSource source = new ReportDataSource("GradeQueryClass_DataTable1", table);
this.ReportViewer1.LocalReport.DataSources.Clear();
this.ReportViewer1.LocalReport.DataSources.Add(source);
string title = xn + "年" + oxq + bh + "班" + str[1] + "学生成绩报表" + "(共"+table .Rows .Count +"人)";
ReportParameter p = new ReportParameter("title", title);
this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });
this.ReportViewer1.LocalReport.Refresh();
}
}
}
}
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GradeQueryClassRPT.aspx.cs"
Inherits="XNCJWC.Web.manager_GradeManage_GradeQueryClassRPT" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>学生总评成绩报表</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="topformlist" style=" auto; height: 20px" id="DIV1" >
<span class="textlabel"> 当前位置->成绩管理->查询->按班级查询学生成绩报表</span></div>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="900px" Height ="400px">
<LocalReport ReportPath="manager/GradeManage/Report/GradeQueryClassRPT.rdlc"></LocalReport>
</rsweb:ReportViewer>
</div>
</form>
</body>
</html>