2012-09-13 2 views
0

데이터 바인딩 (ObjectDataSource)과 함께 양식 (FormView)을 사용하고 있습니다. 모든 입력 필드는 '<%# Bind("field") %>'을 사용하여 바인딩됩니다.입력이 포커스를 잃었을 때만 폼을 저장합니다.

모든 것이 잘 작동하지만 나는이 문제가 (내가 this.Validate() 또는 .EndEdit()를 사용하여 같은 대해 다양한 힌트를 발견 -하지만 아무도 제대로 작동하지 않음) :

  • 항목 만 있도록 입력 필드를 떠난 후 저장됩니다 느슨한 초점

이름이 ID 인 텍스트 상자가 있고 "George"를 입력했다고 가정 해 봅니다. 다음 텍스트 상자로 이동하거나 다른 곳을 클릭하고 저장을 클릭하면 모든 것이 저장됩니다. 그러나 텍스트 상자에 포커스를 유지하면 값이 저장되지 않습니다. 왜 이런 일이 일어나는 걸까요? 이 마법을 피하기 위해 어떤 마법을 사용할 수 있습니까? (JavaScript를 구출 하시겠습니까?)

  • 텍스트 상자의 필드 값 (element.value)을 Javascript를 통해 (콤보 박스에서 무언가를 선택할 때) 설정했습니다.

텍스트 상자의 포커스 및 탭에 값을 저장했을 때만 위와 동일한 문제가 적용됩니다. 이것은 단지 사용자가 콤보 상자에서 뭔가를 선택하고 (텍스트 상자가 그에 따라 업데이트 됨) 사용자가 텍스트 상자를 클릭하고 다시 탭하지 못하게하려는 문제점을 만듭니다.


편집 :

내가 자바 스크립트 (textbox.focus();)를 통해 내 텍스트 상자에 포커스를 설정하는 즉시 다시 콤보 상자 (combobox.focus();)에 포커스를 설정하여 지금 해결하고 트릭을 수행하는 두 번째 문제 - 이게 꽤 나에게 해킹 된 것 같지 않니?


나는 이것이 일반적이라고 가정하지만, 내 강력한 Google fu는 간단한 해결책을 찾는데 도움이되지 못했습니다.

+1

클릭 한 상태에서 포커스를 강제로 시도한 다음 제출 하시겠습니까? –

+0

아니요,하지만 저는 JS로 채우고있는 한 분야에 대해 그렇게 할 수 있습니다 - 일반적인 저장 문제가 남아 있습니다. –

답변

0

DataGridView 컨트롤을 사용하여 작업 할 때 Winforms 개발에서 비슷한 문제가 발생할 수 있습니다. 일반적으로 제출 버튼의 Click 이벤트에 로직을 연결하여 DataGridView의 유효성을 검사합니다. 나는 비슷한 해결책이 당신을 위해 여기서 일할 것이라고 생각합니다.

+0

그곳에갔습니다. 내 저장 버튼은'this.Validate()'를 가지고 있으며 저장 될 필드를 포함하는 UserControls에'Page.Validate()'를 추가했습니다. –