using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;namespace CrystalEg
{
/// <summary>
/// CrystalPush 的摘要说明。
/// </summary>
public class CrystalPush : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox tb;
protected System.Web.UI.WebControls.Button bt;
protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;

private void Page_Load(object sender, System.EventArgs e)
{
this.BindReport();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.bt.Click += new System.EventHandler(this.bt_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void BindReport()
{
string word = "",sql = "";
//指定连接数据库字符串
string strConn = "Server=127.0.0.1;DataBase=Northwind;UID=sa;PWD=";
//实例化报表文件
CrystalReport2 oCR = new CrystalReport2();
//实例化数据集
Dataset1 ds = new Dataset1();
//获得连接
SqlConnection MyConn = new SqlConnection(strConn);
MyConn.Open();
//查询语句
sqllist();
sql = "select * from Customers "+ word +"";
//实例化数据适配器
SqlDataAdapter MyAdapter = new SqlDataAdapter(sql,MyConn);
//填充数据集
MyAdapter.Fill(ds,"Customers");
//报表文件绑定数据集
oCR.SetDataSource(ds);
//指定CrystalReportViewer1控件的ReportSource属性
this.CrystalReportViewer1.ReportSource = oCR;
} #region 查询条件
public void sqllist()
{
string word = "",ttb = "";

if(Request.QueryString["tb"] != null)
{
ttb = Request.QueryString["tb"].ToString();
if(ttb.ToString() != "")
{
if(word.ToString() == "")
{
word += "where ";
}
else
{
word += " and ";
}

word += "customerid like '%" + ttb + "%' ";

}
}
}
#endregion #region 查询
public void bt_Click(object sender,System.EventArgs e)
{
string ttb = "";
ttb = tb.Text;
if(ttb.ToString() == "")
{
Response.Write("<script language='javascript'>alert('请输入关键字!');history.back();</script>");
return;
}
else
{
Response.Redirect("CrystalPush.aspx?tb="+ Server.UrlEncode(ttb) +"");
}
}
#endregion
}
}

解决方案 »

  1.   

    真服了你,代码贴一些关键就好了,这样看半天;帮你修正下:MyConn.Open();
    sql = "select * from Customers where 1=1";
    if (tb != "")
    sql += " and customerid like '%" +tb+ "%'";
    //实例化数据适配器
    SqlDataAdapter MyAdapter = new SqlDataAdapter(sql,MyConn);
    //填充数据集
    MyAdapter.Fill(ds,"Customers");
    //报表文件绑定数据集
    oCR.SetDataSource(ds);
    //指定CrystalReportViewer1控件的ReportSource属性
    this.CrystalReportViewer1.ReportSource = oCR;
      

  2.   

    这个函数BindReport()定义了word ,但一直保持空
    虽然你调用sqllist(),对BindReport()没有啥关系的,不是同一变量
    所以查询的一直是全部
    --------
    可以这样
    sqllist(ref word);
    ---------
    #region 查询条件
    public void sqllist(ref word)
    {
    string ttb = "";

    if(Request.QueryString["tb"] != null)
    {
    ttb = Request.QueryString["tb"].ToString();
    if(ttb.ToString() != "")
    {
    if(word.ToString() == "")
    {
    word += "where ";
    }
    else
    {
    word += " and ";
    }

    word += "customerid like '%" + ttb + "%' ";

    }
    }
    }
      

  3.   

    首先谢谢两位先....
    public void sqllist(ref word)
    提示输入标识符....