我的绑定代码如下:
objRpt = new CrystalReport3(); SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=123;database=db_CustomsTrade");
con.Open();
string sql = CreateSelectQueryAndParameters();
if (!sql.Contains("Column"))
{
MessageBox.Show("No selection to display!");
return;
}
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
da.Fill(ds, "tb_VendorPrint");
con.Close(); objRpt.SetDataSource(ds);
crystalReportViewer1.ReportSource = objRpt;
objRpt = new CrystalReport3(); SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=123;database=db_CustomsTrade");
con.Open();
string sql = CreateSelectQueryAndParameters();
if (!sql.Contains("Column"))
{
MessageBox.Show("No selection to display!");
return;
}
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
da.Fill(ds, "tb_VendorPrint");
con.Close(); objRpt.SetDataSource(ds);
crystalReportViewer1.ReportSource = objRpt;
{
public Form3()
{
InitializeComponent();
} CrystalReport3 objRpt; private void crystalReportViewer1_Load(object sender, EventArgs e)
{ }
/// 本方法用于:
/// 1. 根据用户选定的字段名,创建 SELECT 查询
/// 2. 与水晶报表中的参数字段相对应,创建参数并赋值给它们
/// 说明: 根据用户的选择,这些参数用于显示水晶报表中的列名称(标题)
///
///
private string CreateSelectQueryAndParameters()
{
ReportDocument reportDocument;
ParameterFields paramFields;
ParameterField paramField;
ParameterDiscreteValue paramDiscreteValue;
reportDocument = new ReportDocument();
paramFields = new ParameterFields();
string query = "SELECT ";
int columnNo = 0; if (checkBox1 .Checked )
{
columnNo++;
query = query.Insert(query.Length, "VPCode as Column" + columnNo.ToString());
paramField = new ParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = new ParameterDiscreteValue();
paramDiscreteValue.Value = "VPCode";
paramField.CurrentValues.Add(paramDiscreteValue);
//把 paramField 添加到 paramFields 中
paramFields.Add(paramField);
}
if (checkBox2.Checked)
{
columnNo++;
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "VPShortName as Column" + columnNo.ToString());
paramField = new ParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = new ParameterDiscreteValue();
paramDiscreteValue.Value = "VPShortName";
paramField.CurrentValues.Add(paramDiscreteValue);
//把 paramField 添加到 paramFields
paramFields.Add(paramField);
}
if (checkBox3.Checked)
{
columnNo++; //确定列的数目
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "VPFullName as Column" + columnNo.ToString());
paramField = new ParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = new ParameterDiscreteValue();
paramDiscreteValue.Value = "VPFullName";
paramField.CurrentValues.Add(paramDiscreteValue);
//把 paramField 添加到 paramFields
paramFields.Add(paramField);
}
if (checkBox4.Checked)
{
columnNo++;
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "VPPhone as Column" + columnNo.ToString());
paramField = new ParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = new ParameterDiscreteValue();
paramDiscreteValue.Value = "VPPhone";
paramField.CurrentValues.Add(paramDiscreteValue);
//把 paramField 添加到 paramFields
paramFields.Add(paramField);
}
//如果还有其他参数,为它们赋空值(empty value)
for (int i = columnNo; i < 5; i++)
{
columnNo++;
paramField = new ParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = new ParameterDiscreteValue();
paramDiscreteValue.Value = "";
paramField.CurrentValues.Add(paramDiscreteValue);
//把 paramField 添加到 paramFields
paramFields.Add(paramField);
}
crystalReportViewer1.ParameterFieldInfo = paramFields;
query += " FROM tb_VendorPrint";
return query;
} private void button1_Click(object sender, EventArgs e)
{
objRpt = new CrystalReport3(); SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=123;database=db_CustomsTrade");
con.Open();
string sql = CreateSelectQueryAndParameters();
if (!sql.Contains("Column"))
{
MessageBox.Show("No selection to display!");
return;
}
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
da.Fill(ds, "tb_VendorPrint");
con.Close(); objRpt.SetDataSource(ds);
crystalReportViewer1.ReportSource = objRpt;
} }
这是全部代码。