0

たとえば、次のようなグリッド ビューがあります。

ここに画像の説明を入力

非表示の列 activityID と taskID がある選択した行を削除する必要があります。これは、データベースから削除するために値が必要なため、表示を false に設定しています。

だからここに私のコードがあります:

 protected void gvQuestion_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "delete")
        {
            Model.question del = new Model.question(); // Entitiy CRUD
            del.ActivityID = Convert.ToInt32(gvQuestion.Rows[0].Cells[2].ToString()); // Value of ActivityID column in GV
            del.TaskID = Convert.ToInt32(gvQuestion.Rows[0].Cells[3].ToString()); // Value of TaskID column in GV
            daoQuestion.Delete(del);

        }

        daoQuestion.Save(); 
    }

    protected void gvQuestion_RowDeleted(object sender, GridViewDeletedEventArgs e)
    {
        e.ExceptionHandled = true;
    }

ここのガイドに従いました: http://www.codeproject.com/Articles/111037/Delete-Data-in-GridView-Using-Template-Button

しかし、エンティティ フレームワークを使用して削除していますが、エラーが発生System.FormatException: Input string was not in a correct format.し、エラーは削除ステートメントにあります。エラーを検索したところ、null 値である可能性があります。この問題を解決するにはどうすればよいですか?

ところで、私はデータベースからもこのグリッドビューを作成しました。

4

4 に答える 4

0

以下のように、最初にモデルを照会する必要があると思います。私はlinqにあまり慣れていません。間違っている場合は構文を修正してください。

Model.question del = new Model.question();

var item = from d in del
           where d.ActivityID == Convert.ToInt32(gvQuestion.Rows[0].Cells[2].ToString());
           and d.TaskID == Convert.ToInt32(gvQuestion.Rows[0].Cells[3].ToString());
           select d;

daoQuestion.Delete(item);
于 2013-06-05T03:04:53.910 に答える