1

各行のチェックボックスを使用しているグリッドビューがあります。各行のチェックボックスにアクセスして、チェックされているチェックボックスを見つけようとしていますが、以下のコードを実行しようとすると、条件は常にfalseになり、コードが条件に到達しない場合は内部になります。kindly助けてください。よろしくお願いします。

protected void btn_3id_Click(object sender, EventArgs e)
{
    string str = "";
    string srr = "";
    for (int i = 0; i < GridView1.Rows.Count;i++ )
    {
       CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
       if (chk.Checked==true)     
       {         
           if (str == "")    
           {
              str = GridView1.Rows[i].Cells[0].Text.ToString();
           }     
           else     
           {         
              srr = str + "," + GridView1.Rows[i].Cells[0].Text.ToString();  
           } 
        }
    }
    Session["Card_id"] = str;
    Response.Redirect("ID.aspx");
}
4

3 に答える 3

2

コードは問題ないようです。
問題は、ページの読み込み時にグリッドビューをバインドしている可能性があります。
ページ読み込みの次のセクションでグリッド バインディングを試してください

if(!Page.IsPostBack)
{
  //code to bind the gridview

}
于 2013-03-20T04:36:08.290 に答える
0
if(!Page.IsPostBack)
{
  //
}

ポストバックはcsファイルで重要な役割を果たします。ページの読み込み時に値をクリアする場合は、チェックボックスの値をnullにします。コードは問題ありません。これをやってみてください...

于 2013-03-20T05:13:52.437 に答える
0

gridviewPostBack をチェックせずに、各ページの読み込みをバインドしていると推測できます。これにより、チェックボックスの現在の状態が失われます。したがって、 DataSource を Gridview に割り当てている場所では、次のように PostBack を確認します。

if(!Page.IsPostBack)
{
   GridView1.DataSource = yourDataSource;
   GridView1.DataBind();
}

また、チェックのようなコードでいくつかの小さな改善を行うことができます:

if(chk.Checked == true)

次のように置き換えることができます。

if(chk.Checked) //Since it returns a bool value. 

連結のために複数の文字列変数を省略できます。StringBuilderを使用する方が良いのでなぜそれが良いのかをご覧ください)、コードは次のようになります。

protected void btn_3id_Click(object sender, EventArgs e)
{
    StringBuilder sb  = new StringBuilder();
    for (int i = 0; i < GridView1.Rows.Count;i++ )
    {
       CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
       if (chk.Checked==true)     
       {         
              sb.Append() GridView1.Rows[i].Cells[0].Text.ToString();
       }     
    }
    Session["Card_id"] = sb.ToString();
    Response.Redirect("ID.aspx");
}
于 2013-03-20T04:35:48.873 に答える