1

私は再びasp.netに固執しました。ドロップダウンリストからカテゴリ(SQLサーバーの物語名で作成されたデータベースはアイテムであり、カテゴリはそのフィールドです)を選択してアイテムを購入し、1番目のGridViewに表示するWebサイトを作成しています。購入者は1番目のGridviewからアイテムを確認し、[選択]ボタンをクリックすると、選択したアイテムが2番目のGridviewに表示されます。また、2番目のGridviewにはTemplateField Textboxがあり、購入した数量アイテムが必要です。

レポートの生成をクリックすると、gridview2テキストボックスの値に購入者が購入した数量がCrystalReportに表示されます。

これを行う必要があるのは、レポートでアイテム名を取得するのに問題はありませんが、gridviewテキストボックスの値を取得することはできません。私はグーグルで検索しましたが、運がありません。

誰でも例を教えてください..私はC#に取り組んでいます

私はこれを試しました

 protected void Button1_Click(object sender, EventArgs e)
 {
    List<string> checkedIDs = new List<string>();

    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        CheckBox chbox = GridView1.Rows[i].Cells[0].FindControl("CheckBox1") as CheckBox;
        if (chbox.Checked == true)
        {
            checkedIDs.Add("'" + GridView1.Rows[i].Cells[1].Text + "'"); 

        }

    }
    string conn = ConfigurationManager.ConnectionStrings["Test_T3ConnectionString2"].ConnectionString;
    SqlConnection con = new SqlConnection(conn);
    string query = "select prod_name,price from products where prod_id in (" + string.Join(",", checkedIDs.ToArray()) + ")"; 
    SqlCommand cmd = new SqlCommand(query, con);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet1 ds = new DataSet1(); 
    da.Fill(ds.Tables["Purchase_Report"]);

    GridView2.DataSource = ds;
    GridView2.DataBind();
    ViewState["Records"] = ds;

}




protected void Button2_Click(object sender, EventArgs e)
{

    ReportDocument rd = new ReportDocument();
    rd.Load(Server.MapPath("CrystalReport.rpt"));
    rd.SetDataSource(ViewState["Records"]);
    rd.SetDatabaseLogon("sa", "abc", "localhost", "Test_T3");
    rd.SetParameterValue("Quantity",GridView2.Rows[0].Cells[0].FindControl("TextBox1")); //this is what i tried, Quantity is a parameter i created in my crystal report

    CrystalReportViewer1.ReportSource = rd;
    CrystalReportViewer1.DataBind();

}

ありがとう

4

1 に答える 1

0

「GridView」から選択したすべてのpush(必要な)情報/データをデータベースに保存/保持するかpull、CrystalReportエンジンにデータを保存することをお勧めします。

Crystal Reportパラメータを使用して値または複数の値を渡すことができますが、必要に応じて、これは役に立ちません。

編集:

TextBox 参照を渡そうとしています。以下を試してください:

  TextBox tx= GridView2.Rows[0].Cells[0].FindControl("TextBox1") as TextBox;
  rd.SetParameterValue("Quantity",tx.Text);

複数値 (配列) パラメーター値の場合

  rd.SetParameterValue("@data", new int[]{10,20,30,40});
于 2012-07-19T02:59:37.037 に答える