2012-04-03 3 views
3

フォームビューを更新する前にifを実行します。 if yes then ... "メッセージ" &更新クエリをキャンセルしない場合 更新クエリを続行しない場合。ASP.NETフォームビューIFを更新中

私はこれを試しましたが、ifのインスタンスの最初の行に "obeject instance not null instance ..."が設定されていますか?に関係なく更新されます

Private Sub FormView2_ItemUpdating(sender As Object, e As System.Web.UI.WebControls.FormViewUpdateEventArgs) Handles FormView2.ItemUpdating 
    Dim status As TextBox = FormView1.FindControl("ApprovalStatusTextBox") 


    If status.Text = "approved" Or "denied" Then 
     e.Cancel = True 
     lblupdaterequest.Text = "you cannot update this request as it has already been responded to" 
    Else 
     HolidayDetailsdatasource.Update() 
    End If 

誰もがこのようなことを達成したことを知っていましたか?

正確なエラー:

System.NullReferenceException was unhandled by user code 
    Message=Object reference not set to an instance of an object. 
    Source=WebApplication1 
    StackTrace: 
    at WebApplication1.HolidayApprovalDetails.DetailsView1_ItemUpdating(Object sender, DetailsViewUpdateEventArgs e) in line 32 
    at System.Web.UI.WebControls.DetailsView.OnItemUpdating(DetailsViewUpdateEventArgs e) 
    at System.Web.UI.WebControls.DetailsView.HandleUpdate(String commandArg, Boolean causesValidation) 
    at System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) 
    at System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) 
    at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) 
    at System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) 
    at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) 
    at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) 
    at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) 
    at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
    at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
    at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
+0

現実的できれいなエラーメッセージを投稿できますか?たぶんコピー&ペースト?あなたのステータスのテキストボックスが存在しないか、またはnullのように聞こえますか?それをデバッグできますか? – Remy

+0

このTextBoxはどこですか?つまり、テンプレート(fe ['EditItemTemplate'](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.edititemtemplate.aspx)の意味ですか? FormViewには3つの異なる['FormViewModes'](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formviewmode.aspx)がありますが、 FormViewUpdateEventArgs.NewValues'](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formviewupdateeventargs.newvalues.aspx)代わりに –

+0

はい、そのedititemtemplate – user1055487

答えて

2

私は、少なくともあなたのサブItemUpdatingがFormView2 "を参照しているときに、「FormView1」からステータステキストボックスの値を取得していることがわかります'

は、これを変更した後、必ずあなたが望んでいた正しい値だ作るために、もし前にメッセージボックスを追加してみてください。うまくいけば

MsgBox(status.Text) 

を、それはあなたがあなたの問題を解決するのに役立ちます。

+0

良いスポット!ありがとう – user1055487

1
If status IsNot Nothing AndAlso (status.Text = "approved" OrElse status.Text = "denied") Then 
+0

これはもうクラッシュしません。私は何かを逃している "状態"に関係なく病気の更新? – user1055487