2010-02-26 1 views
5

저는 Microsoft가 하루 만에 기대하는 방식으로 작동하도록 FormView를 얻는 데 어려움을 겪었습니다.Insert Method가 실행 된 후 FormView가 사용자가 입력 한 값을 지우지 않게하려면 어떻게합니까?

ObjectDataSource.Inserting 이벤트 처리기에서 e.Exception 및 e.ReturnValue를 catch 할 수 있으며 e.ObjectInstance ... 및 Even를 검사하여 ObjectDataSource.ObjectDisposing에서 Object의 다른 속성을 속일 수 있습니다. FormView의 삽입 처리기가 ObjectDisposing 처리기 이후에 실행된다는 것을 알았습니다. 문제가 발견 된 경우에도 여전히 응답하고 FormView에서 e.KeepInInsertMode를 true로 처리 할 시간이있었습니다.

내 문제는 삽입 양식에 사용자가 입력 한 값이 관계없이 지워진 것입니다.

그렇다면 삽입 메서드가 실행 된 후 FormView가 지워지지 않게하려면 어떻게합니까?

은 (ASP.NET + VB를 사용)

그래서 내가 '... 정말 내가 기밀 비즈니스 로직 물건을 트림을 수정하는 것이 훨씬 좋은 것 할 것입니다 여기에 내 코드를 게시 생각하지 않는다 지금은 건너 뛸거야.

편집 : 나는 (아무도 문제에 대한 진정한 해결책을 찾지 경우) 임시 및 인정 하듯이 몹시 cludgy 솔루션을 발견

. 내가 컨트롤하는 것이 같은 것을에서이 다음

Dim eInsertArgs As FormViewInsertedEventArgs 

그리고 나는 각 컨트롤에

If boolInsertErrorOccurred = False Then 
     e.KeepInInsertMode = True 
     eInsertArgs = e 
    Else 
     eInsertArgs = Nothing 
    End If 

그럼 내 ItemInserted 핸들러에서 다음을 수행하십시오

나는 같은 페이지 변수가 정의되어 데이터 바인딩 이벤트 :

If IsNothing(eInsertArgs) = False Then 
     Dim _sender As TextBox = sender 
     _sender.Text = eInsertArgs.Values("_FieldName") 
    End If 

이 효과는 값을 설정하는 것입니다. ASP.NET은 FormView를 기본 (빈) 템플릿에 바인딩 한 후 제출 된 값으로 되돌립니다.

덜 끔찍한 해결책을 찾도록 도와주세요. :)

+0

당신이 답변으로 솔루션으로 편집을 제출해야합니다. –

답변

1

FormView 컨트롤에서 상속하는 고유 한 서버 컨트롤을 만들어야합니다.

Public Class MyFormView 
    Inherits FormView 

Protected Overrides Sub OnDataSourceViewChanged(ByVal sender As Object, 
ByVal e As EventArgs) 
    If (MyBase.CurrentMode = FormViewMode.Insert) Then 
      MyBase.RequiresDataBinding = False 
    Else 
      MyBase.OnDataSourceViewChanged(sender, e) 
    End If 
End Sub 

End Class 

은이 페이지를 참조하시기 바랍니다 : http://www.dotnetmonster.com/Uwe/Forum.aspx/asp-net/76885/FormView-Insert