2

データグリッドビューとグリッドビューを使用しているC#でアプリを開発しています最初の列にはチェックボックスが含まれており、チェックボックスがtrueかどうかを確認したいのですが、「オブジェクト参照がインスタンスに設定されていません」という例外が表示されますオブジェクト」。コードは次のとおりです

  private void btnDelete_Click(object sender, EventArgs e)
        {
            StudentDAL s = new StudentDAL();

            try 
            {
                for (int i = 0; i < this.dataGridView1.RowCount; i++)
                {

                    if (!DBNull.Value.Equals(this.dataGridView1.Rows[i].Cells[0]) && (bool)this.dataGridView1.Rows[i].Cells[0].Value == true)
                    {

                        s.delete(Convert.ToInt32(this.dataGridView1.Rows[i].Cells[1].Value));
                        i--;

                    }

                }
                this.dataGridView1.DataSource = s.getAll();

            }
            catch (Exception nn)
            {


            }


        }

私を助けてください。

4

3 に答える 3

0

さらに検証を追加する

foreach (DataGridViewRow rw in this.dataGridView1.Rows)
{
    if (rw.Cells.Count > 2 && 
        rw.Cells[0].Value != DBNull.Value && String.IsNullOrWhiteSpace(rw.Cells[0].Value.ToString()) &&
        ((bool)rw.Cells[0].Value) &&
            rw.Cells[1].Value != DBNull.Value && String.IsNullOrWhiteSpace(rw.Cells[1].Value.ToString()))
    {
            s.delete(Convert.ToInt32(rw.Cells[1].Value));

    }
}
于 2012-06-17T12:34:40.520 に答える
0

最初に CheckBox コントロールを見つける必要があります。次に、チェックされているかどうかを次のように確認できます。

    Int32 i;
    CheckBox k;

    for (i = 0; i < GridView1.Rows.Count; i++)
        {
            k = ((CheckBox)(GridView1.Rows[i].Cells[0].FindControl("chk")));
            if (k.Checked == true)
            {
                //your code here
            }
            else
            {
                //your code here
            }
        }
于 2012-06-17T13:26:30.250 に答える
0

初期化されていないオブジェクトを参照しようとしています (私はこのインスタンス Row[i] を信じています)。

for ループ内にブレークポイントを配置し、ステップ スルー (F10) して、例外がスローされたときの i の位置を確認してください。

于 2012-06-17T12:07:40.690 に答える