1

テンプレート フィールド内にチェック ボックスを含むグリッドビューがあります。データベースを介して更新できるように、チェック ボックスがオンになっている行の値を取得したいと考えています。これが私のコードです:

    protected void approve_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            if (((CheckBox)GridView1.Rows[i].FindControl("Select")).Checked) 
            {

//ループがチェックされたチェックボックスを見つけた場合、その行に対して次を実行すると思いました:

                con.Open();

                string approve = "update table set status ='Approved' where ID=" + GridView1.Rows[i].Cells[1].Text + "";

                SqlCommand scmapprove = new SqlCommand(approve, con);

                scmapprove.ExecuteNonQuery();

                view();

                con.Close();

            }

                            }

しかし、うまくいかないようです。たとえば、テーブルから 5 つの行をチェックしましたが、最初の行のみが更新されます。私は何をすべきか?

4

1 に答える 1

2

チェックされた行を見つけた後、Gridview を再バインドしています。すべての更新操作が完了したらバインドします。

protected void approve_Click(object sender, EventArgs e)
{
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        if (((CheckBox)GridView1.Rows[i].FindControl("Select")).Checked) 
        {
            //I thought if the loop finds a checked check box, it will execute the following to that row:
            con.Open();
            string approve = "update table set status ='Approved' where ID=" + GridView1.Rows[i].Cells[1].Text + "";

            SqlCommand scmapprove = new SqlCommand(approve, con);
            scmapprove.ExecuteNonQuery();

            //view(); //Donot rebind the gridview now.
            con.Close();
        }
    }

    view();
}
于 2013-08-30T17:18:29.607 に答える