我刚入行,老板让我将查询的结果放入DataGrid中,然后生成水晶报表。看了很多资料,都是直接绑定到数据库中的表,有没有办法绑定到DataSet,DataTable,DataGrid之类!请各位高手帮手,100分求详细答案!在线等!

解决方案 »

  1.   

    给你个例子:
     Private Sub BuildGrid()
            Try
                myCommand = New SqlCommand("Ent_UserCreateUpdate", sqlConn)
                myCommand.CommandType = CommandType.StoredProcedure
                myCommand.Parameters.Add("@UserID", SqlDbType.NVarChar).Value = NewFunction.GetLogUserIDFromSession
                myCommand.Parameters.Add("@strTiaoJian", SqlDbType.NVarChar).Value = txtKeyword.Text.Trim.ToString
                myCommand.Parameters.Add("@SearchEntID", SqlDbType.NVarChar).Value = drpEnt.SelectedValue
                myCommand.Parameters.Add("@EntID", SqlDbType.NVarChar).Value = NewFunction.GetLogEntIDFromSession
                myCommand.Parameters.Add("@Type", SqlDbType.NVarChar).Value = "6"
                da.SelectCommand = myCommand
                ds = New DataSet
                da.Fill(ds)
                DataGrid1.DataSource = ds.Tables(0).DefaultView
                DataGrid1.DataBind()
            Catch ex As Exception
                Response.Write(ex.ToString)
            Finally        End Try
        End Sub
      

  2.   

    我都是用水晶报表的推模式做的,这样数据比较好控制。给你一些代码吧。
    private void Fr_khyfb_Load(object sender, System.EventArgs e)
    {
    try
    {
    dss=new DataSet(); #region 建立khyfb表结构
    DataTable dt=new DataTable("khyfb");
    dt.Columns.Add("kh",System.Type.GetType("System.String"));
    dt.Columns.Add("rq",System.Type.GetType("System.DateTime"));
    dt.Columns.Add("js",System.Type.GetType("System.Int32"));
    dt.Columns.Add("ysfs",System.Type.GetType("System.String"));
    dt.Columns.Add("yf",System.Type.GetType("System.Decimal"));
    dt.Columns.Add("mjyf",System.Type.GetType("System.Decimal"));
    dss.Tables.Add(dt);
    #endregion //该表khyfb有两种数据
    #region 添加自送费用数据
    for(int i=0;i<ds.Tables["khyfbzs"].Rows.Count;i++)
    {
    DataRow dr=dt.NewRow();
    dr["kh"]=ds.Tables["khyfbzs"].Rows[i]["ckhbh"];
    dr["rq"]=ds.Tables["khyfbzs"].Rows[i]["tccsj"];
    dr["js"]=ds.Tables["khyfbzs"].Rows[i]["nchjs"];
    dr["ysfs"]=ds.Tables["khyfbzs"].Rows[i]["ysfs"];
    dr["yf"]=ds.Tables["khyfbzs"].Rows[i]["yf"];
    dr["mjyf"]=System.Convert.ToDecimal(ds.Tables["khyfbzs"].Rows[i]["yf"])/System.Convert.ToInt32(ds.Tables["khyfbzs"].Rows[i]["js"]);
    dt.Rows.Add(dr);
    }
    #endregion #region 添加托运费用数据
    for(int j=0;j<ds.Tables["khyfbty"].Rows.Count;j++)
    {
    DataRow dr=dt.NewRow();
    dr["kh"]=ds.Tables["khyfbty"].Rows[j]["khbh"];
    dr["rq"]=ds.Tables["khyfbty"].Rows[j]["chtyrq"];
    dr["js"]=ds.Tables["khyfbty"].Rows[j]["chjs"];
    dr["ysfs"]=ds.Tables["khyfbty"].Rows[j]["ysfs"];
    dr["yf"]=ds.Tables["khyfbty"].Rows[j]["hjje"];
    dr["mjyf"]=System.Convert.ToDecimal(ds.Tables["khyfbty"].Rows[j]["hjje"])/System.Convert.ToInt32(ds.Tables["khyfbty"].Rows[j]["chjs"]);
    dt.Rows.Add(dr);
    }
    #endregion
                
    //建立报表类
    crReportDocument=new khyfhzb(); 
    //帮定到数据库
    crReportDocument.SetDataSource(dss);
    //设置数据源
    crystalReportViewer1.ReportSource = crReportDocument;
    crystalReportViewer1.ShowGroupTreeButton=true;
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }
      

  3.   

    http://www.microsoft.com/china/community/Column/26.mspx
      

  4.   

    不好意思,为什么会出现下列错误:
    E:\Test\test\CrystalReport1.cs(74): 已在多处定义“CrystalDecisions.Shared.ExportOptions”;使用“c:\Program Files\Common Files\Crystal Decisions\2.0\managed\CrystalDecisions.Shared.dll”中的定义
      

  5.   

    直接刪除CrystalReport1.cs這個文件,重新編譯即可.