2012-03-14 11 views
0

Friends データベースにデータを挿入するために、私のwindowsdesktopアプリケーションにdatagridviewがありました。私がクリックしたときに追加ボタンの検証には、細胞が、私はその複雑プロセス と思うので、私はこのnull値の有効性を確認するDataGrid

よう
public void validateDatagrid() 
     { 
      if (tblpurchaserequest.RowCount == 1) 
      { 
       lblstatus.Text = "There is No Purchase Data to Add"; 

      } 
      else 
      { 
       for (int i = 0; i < tblpurchaserequest.RowCount; i++) 
       { 



        if (tblpurchaserequest.Rows[i].Cells[0].Value.ToString().Trim() == "" || tblpurchaserequest.Rows[i].Cells[1].Value == null) 
        { 
         lblstatus.Text = "Please Enter Item in " + i + "th ROW"; 
        } 

        if (tblpurchaserequest.Rows[i].Cells[0].Value.ToString().Trim() == "" || tblpurchaserequest.Rows[i].Cells[2].Value == null) 
        { 
         lblstatus.Text = "Please Enter Description in " + i + "th ROW"; 
        } 
        if (tblpurchaserequest.Rows[i].Cells[0].Value.ToString().Trim() == "" || tblpurchaserequest.Rows[i].Cells[3].Value == null) 
        { 
         lblstatus.Text = "Please Enter Supplier in " + i + "th ROW"; 
        } 
        if (tblpurchaserequest.Rows[i].Cells[0].Value.ToString().Trim() == "" || tblpurchaserequest.Rows[i].Cells[4].Value == null) 
        { 
         lblstatus.Text = "Please EnterQuantity in " + i + "th ROW"; 
        } 
       } 
      } 

     } 

を、コードを書いていたが、これは例外を与えている cellvalidatoreventを使用していない空の.Iを残していないことを確認するために行われるべきですオブジェクト参照がオブジェクト インスタンスに設定されていません。 plsは私に私のミスをアドバイス

+1

問題の原因を見つけるためにデバッガを使用できませんか? (オブジェクトのプロパティの1つは、オブジェクトがnullに設定されている間に呼び出します) – Msonic

答えて

1

明らかにいくつかの値はnullで、if節でのチェックのやり方は異なる順序にする必要があります。 、最初のNULLかどうかを確認され

if (tblpurchaserequest.Rows[i].Cells[1].Value == null 
    || tblpurchaserequest.Rows[i].Cells[0].Value.ToString().Trim() == "") 

:へ

if (tblpurchaserequest.Rows[i].Cells[0].Value.ToString().Trim() == "" 
    || tblpurchaserequest.Rows[i].Cells[1].Value == null) 

:から

変更。これにより、最初の部分が実際にnullを返す場合(つまり、「オブジェクト参照のあいさつ」エラーを返す)、ifの2番目の部分が評価されなくなります。

すべての順序を逆にする必要がありますコードブロック内のif文。

0

は、例えばメソッドを書く:

private void CallingMethod() 
    { 
     DataGridView dgv = new DataGridView(); 
     if (IsNullOrEmpty(dgv.Rows[0].Cells[0].Value) 
     { 
      lblValue.Text = "Please enter a value for this cell"; 
     } 

    } 

    // Method to check if the cell is empty 
    public bool IsNullOrEmpty(object cellValue) 
    { 
     if (cellValue == null) 
     { 
      return true; 
     } 
     else 
     { 
      if (cellValue.ToString().Trim() == "") 
      { 
      return true; 
      } 
     } 
     return false; 
    } 

これはあなたのコードを簡素化し、それが簡単に読んで理解して行う必要があります。

オブジェクト参照エラーの理由は、null値を持つオブジェクトで.ToString()を使用すると例外がスローされるためです。私のアドバイスは、最初に値がnullであるかどうかをチェックし、そうでない場合は空の文字列にeqaulかどうかをテストすることです。

関連する問題