私は再び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();
}
ありがとう