我正在尝试向我的水晶报告显示一个文本框,作为我已经开始的修改。我的数据表已经工作了,我想将文本从文本框直接传输到crystal report unboundstring。我有问题。这是我的代码示例。你能帮我么。我对这一行有具体问题
((TextObject)objRpt.Section2.ReportObjects["@UnboundString1"]).Text = TextBox1.text;
感谢。
这是错误: 无法将“CrystalDecisions.CrystalReports.Engine.FieldObject”类型的对象强制转换为“CrystalDecisions.CrystalReports.Engine.TextObject”。
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection cnn;
string connectionString = null;
string sql = null;
connectionString = "data source=SERVER; initial catalog= DBO ;user id=sa; password= password";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select Leave_Type as DataColumn1,Reason as DataColumn2, Date_From as DataColumn4, Date_To as DataColumn5 from Leave_Application where Badge_Number = '" + TextBox1.Text + "'";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
cnn.Close();
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "DataTable1");
EmployeeLeave objRpt = new EmployeeLeave();
((TextObject)objRpt.Section2.ReportObjects["@UnboundString1"]).Text = TextBox1.text;
objRpt.SetDataSource(ds.Tables[0]);
CrystalReportViewer1.ReportSource = objRpt;
CrystalReportViewer1.RefreshReport();
}
答案 0 :(得分:2)
错误说清楚,你试图将FieldObject转换为TextObject,这是不可能的。
我的第一个观察是您正在使用公式字段,因为 @UnboundString1 以“@”符号开头。其次,您不能使用报表中显示的名称来引用字段,而是使用“属性”窗口中显示的对象的名称。
要创建未绑定字段,您可以创建TextObject并使用已使用的方法,也可以创建参数并使用SetParameterValue方法设置其值。
答案 1 :(得分:1)
用VB试试这个
'pass texbox2 to unbounddate1
CrystalReportSource1.ReportDocument.DataDefinition.FormulaFields.Item("unbounddate1").Text = "'" &
Me.TextBox2.Text & "'" 'pass texbox3 to unbounddate2
CrystalReportSource1.ReportDocument.DataDefinition.FormulaFields.Item("unbounddate2").Text = "'" &
Me.TextBox3.Text & "'"