我的绑定代码如下:
  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;

解决方案 »

  1.   

     public partial class Form3 : Form
        {
            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;
                   }    }
    这是全部代码。