0

とにかくタイトルが言ったように、私はテーブル is sql-server productsを持っています。

製品ID、名前、価格、カテゴリがあります。

私がしたことは、データを最初GridViewのカテゴリごとに取得することです。特定の行または複数の行をチェックして選択ボタンをクリックすると、2番目のグリッドビューに製品名と価格が表示されます。

しかし、2番目のグリッドビューで次の選択されたアイテムを以前に選択されたアイテムにオーバーライドし、複数の選択されたアイテムではなく1行のみを表示します。

誰でも私を助けることができますか??

ここにコードがあります

protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {

            CheckBox chbox = GridView1.Rows[i].Cells[0].FindControl("CheckBox1") as CheckBox;

            if (chbox.Checked == true)
            {
                string conn = ConfigurationManager.ConnectionStrings["Test_T3ConnectionString2"].ConnectionString;
                SqlConnection con = new SqlConnection(conn);
                string query = "select prod_name,price from products where prod_id = '" + GridView1.Rows[i].Cells[1].Text + "'";
                SqlCommand cmd = new SqlCommand(query, con);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);

                GridView2.DataSource = dt;
                GridView2.DataBind();
            }

        }
    }
4

1 に答える 1

0

グリッドをバインドする回数が多すぎます。

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);
        DataTable dt = new DataTable();
        da.Fill(dt);

        GridView2.DataSource = dt;
        GridView2.DataBind();
}
于 2012-07-17T12:06:42.123 に答える