2016-12-03 7 views
-1

EDIT:重複しません。私が示唆されたポストをチェックし、解決する方法を、次に:オブジェクト参照がオブジェクトのインスタンスに設定されていません - DataGrid RowUpdating

  • 私は
  • 手動で私の列の名前、私は、ユーザーが

新しい行を追加することができないのです、私は質問を知っていますおそらく何十億回も要請されていましたが、できる限り試してみましたが、デバッグですべてをチェックして、エラーが見つかりませんでした。

私はdatagridviewでrowupdatingイベントを使用しています。
エラーラインである:

mycmd.Parameters.AddWithValue( "@は、fn"、txtfirstname.Text.Trim());

int userID = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value.ToString()); 

    GridViewRow myrow = (GridViewRow)GridView1.Rows[e.RowIndex]; 

    Label lbluserID = myrow.FindControl("userID") as Label; 
    TextBox txtfirstname = myrow.FindControl("FirstName") as TextBox; 
    TextBox txtlastname = myrow.FindControl("LastName") as TextBox; 
    TextBox txtemailAgent = myrow.FindControl("email") as TextBox; 

    GridView1.EditIndex = -1; 
    mycon.Open(); 
    string sql = "Update Users SET [email protected], [email protected], [email protected], WHERE [email protected]"; 
    OleDbCommand mycmd = new OleDbCommand(sql , mycon); 

    mycmd.Parameters.AddWithValue("@userID", userID); 

    mycmd.Parameters.AddWithValue("@fn", txtfirstname.Text.Trim()); 
    mycmd.Parameters.AddWithValue("@ln", txtlastname.Text.Trim()); 
    mycmd.Parameters.AddWithValue("@email", txtemailAgent.Text.Trim()); 

    mycmd.ExecuteNonQuery(); 

    this.fillDataview(); 
+0

間違った情報で途中で質問を変更しないでください。あなたはパラメータとしてテキストボックスを追加することはできません... – mybirthname

+0

質問のこのバージョンにとどまってください - ここでそれをデバッグするように編集しないでください - あなたはそのように答えを得ることはできません - 答えは意味をなさないそれを劇的に変えてください。どちらの方法でも最後のバージョンはまったく意味がありません...ローカルでデバッグしてください - ここではありません! – Aristos

+0

コードをステップバイステップでデバッグし、ここにコメントを残してください。はい、重複しているのは、ステップバイステップでコードをデバッグする場合に解決できるnull参照です。 – Aristos

答えて

2
TextBox txtfirstname = myrow.FindControl("FirstName") as TextBox; 

FindControlならば、txtfirstname.Textが例外をスローしますtxtfirstnameはnullになります失敗した場合、nullオブジェクトのプロパティにアクセスします。 デバッグし、それぞれのfindコントロールメソッドの戻り値が何であるかを確認し、コントロールの実際の名前がnullの場合は、指定した名前をチェックします。検証を追加して、データベースの更新を実行する前に必要なすべてのフィールドが提供されていることを確認することもできます。

更新されたコードでは、パラメータ値としてUIコントロールを設定しています。それは間違っています。テキストボックスのテキストプロパティを取得する必要があります。

2

を呼び出すと、このエラーが発生するため、txtfirstnameはnullです。

問題は、この行に産む:ここ

TextBox txtfirstname = myrow.FindControl("FirstName") as TextBox; 

あなたがTextBoxを見つけることができません。 1つの可能性は、このIDが間違っていることです。確認する必要があります。

このTextBoxは、追加パラメータであなたのGridViewには、プロパティ名=「姓」とテキストボックスが含まれているかどうか

+0

IDは私のデータベースから来るラベルです。あなたの答えごとに、私は彼が私のコントロールを見つけられない理由を見つける必要があります – NewPassionnate

0

チェックをチェックをする必要があり、常に表示されるように期待されていない場合。参照変数txtfirstnameは、例外の原因となっているnullに設定されています。

+0

なぜIDはファーストネームと等しいでしょうか?わかりません。 – NewPassionnate

+0

あなたが渡している他の問題の場合は、次のようなTextプロパティを使用する必要があります。 mycmd.Parameters.AddWithValue( "@ ln"、txtlastname.Text); – Ashish

+0

私の悪い。私が意味したことは、あなたのテキストボックスの '名前'プロパティでした – Ashish

関連する問題