为什么 if 语句在调用 crystal 报告 asp.net 时无法在多个条件下按预期工作?
why if statement not working as expected with multiple conditions when calling crystal reports asp.net?
我正在医学化验系统中打印结果报告,并且我有带有 && 和 || 的多个条件的 IF 语句,然后我根据该条件调用 crystal 报告,并在 运行 报告时使用存储过程并传递参数。
IF 语句不起作用且未将参数传递给报表。
我在单击打印 link 和页面加载时使用此代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TXTORDERID.Text = Request.QueryString["order_id"].ToString();
TXTDEPTID.Text = Request.QueryString["DEPT ID"].ToString();
if (Convert.ToInt32(Session["custid"]) > 1 && Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4 )
{
paramField.Name = "@ORDER_ID";
paramDiscreteValue.Value = TXTORDERID.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
paramField = new ParameterField();
paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "@deptid";
paramDiscreteValue1.Value = TXTDEPTID.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue1);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
reportDocument.Load(Server.MapPath("~/RPT/RPT_RESULTS.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
}
现在,当我像这段代码一样使用 IF 语句时,它不会将参数直接传递给报告,而是要求报告参数 order_id 和 dept_id
if (Convert.ToInt32(Session["custid"]) > 1 && Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4 )
当我像这段代码一样使用 IF 语句和 () 之后 && 它不要求参数和 运行 空报告
if (Convert.ToInt32(Session["custid"]) > 1 && (Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4) )
如何将 IF 语句更新为 运行 报表而不询问报表参数值 @order_id 和 @deptid?
我知道它是旧的 post,但如果它对其他人有帮助的话
基本上你的 2 个 if 语句总结如下
if( boolean1 && boolean2 || boolean3 || boolean4 || boolean5)
该表达式计算 boolean1 和 boolean2 如果为真则检查剩余的
if(boolean1 && (boolean2 || boolean3 || boolean4 || boolean5))
表达式 evaulates boolean1 && 括号中boolean的结果
您可以阅读 Conditional logical operators
及其 short-circuit
行为
here
我正在医学化验系统中打印结果报告,并且我有带有 && 和 || 的多个条件的 IF 语句,然后我根据该条件调用 crystal 报告,并在 运行 报告时使用存储过程并传递参数。 IF 语句不起作用且未将参数传递给报表。 我在单击打印 link 和页面加载时使用此代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TXTORDERID.Text = Request.QueryString["order_id"].ToString();
TXTDEPTID.Text = Request.QueryString["DEPT ID"].ToString();
if (Convert.ToInt32(Session["custid"]) > 1 && Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4 )
{
paramField.Name = "@ORDER_ID";
paramDiscreteValue.Value = TXTORDERID.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
paramField = new ParameterField();
paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "@deptid";
paramDiscreteValue1.Value = TXTDEPTID.Text.ToString();
paramField.CurrentValues.Add(paramDiscreteValue1);
paramFields.Add(paramField);
CrystalReportViewer1.ParameterFieldInfo = paramFields;
CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
reportDocument.Load(Server.MapPath("~/RPT/RPT_RESULTS.rpt"));
CrystalReportViewer1.ReportSource = reportDocument;
}
现在,当我像这段代码一样使用 IF 语句时,它不会将参数直接传递给报告,而是要求报告参数 order_id 和 dept_id
if (Convert.ToInt32(Session["custid"]) > 1 && Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4 )
当我像这段代码一样使用 IF 语句和 () 之后 && 它不要求参数和 运行 空报告
if (Convert.ToInt32(Session["custid"]) > 1 && (Convert.ToInt32(TXTDEPTID.Text) == 1 || Convert.ToInt32(TXTDEPTID.Text) == 2 || Convert.ToInt32(TXTDEPTID.Text) == 3 || Convert.ToInt32(TXTDEPTID.Text) == 4) )
如何将 IF 语句更新为 运行 报表而不询问报表参数值 @order_id 和 @deptid?
我知道它是旧的 post,但如果它对其他人有帮助的话
基本上你的 2 个 if 语句总结如下
if( boolean1 && boolean2 || boolean3 || boolean4 || boolean5)
该表达式计算 boolean1 和 boolean2 如果为真则检查剩余的if(boolean1 && (boolean2 || boolean3 || boolean4 || boolean5))
表达式 evaulates boolean1 && 括号中boolean的结果
您可以阅读 Conditional logical operators
及其 short-circuit
行为
here