2012-08-29 2 views
1

동일한 .ASPX 페이지에 ListView 및 DetailsView 구성 요소가 있습니다. DetailsView는 ListView에 표시된 행의 집계 합계를 표시합니다. 최신 상태로 유지하기 위해 ListView ItemUpdated, ItemInserted 및 ItemDeleted 이벤트 처리기에서 DetailsView.DataBind()를 호출합니다.ASP.Net ListView에서 편집하는 동안 Enter 키를 누르면 반 직관적 인 동작이 발생합니까?

편집 또는 삽입 중에 필드에서 Enter 키를 누르면 현재 행의 변경 사항이 취소되고 첫 번째로 보이는 행이 편집 모드로 전환됩니다. Enter 키를 누르지 않고 업데이트 단추를 누르면 예상대로 작동합니다.

원래 데이터 바인딩 호출을 추가하기 전에이 동작이 현상 유지라고 가정했지만 업데이트 단추가 행의 첫 번째이고 취소 단추가 마지막 일 때 ENTER는 내가 원하는대로 행동했습니다. 현재 행에 대한 변경 사항을 저장하고 편집 모드를 종료했습니다. 그러나 그것은 DataBind 호출이 제자리에없는 경우에만 해당됩니다.

DetailsView에 새로 고침 단추를 추가 할 수 있다고 가정하지만, 정말 더럽거나 ENTER를 누르지 않는 것을 결정할 수는 없습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?

TIA, MM

+0

오, 거의 잊어 버렸습니다. 나는 공급자 제한 때문에 CLR 3.5를 사용하고 있습니다. 4를 사용할 수 없습니다. –

+0

귀하의 ASPX 마크 업 코드 게시 – Nathan

+0

무슨 일이 일어나고 있는지보고, Enter 키를 누르면 페이지에서 발생하는 첫 번째 버튼이 눌러집니다. (그들은 ImageButtons입니다.) 페이지 위쪽에 투명한 이미지가있는 단추를 추가하여 수정 한 것을 수정하여 코드를 답변으로 게시 할 것입니다. –

답변

1

문제 누르면 입력 폼에서 발생하는 제 버튼 '클릭'이었다. 그래서 나는 투명한 이미지와 다른 컨트롤 위의 버튼을 누르면 다음 클릭 핸들러 작성 :

protected void TransparentUpdateButton_Click(object sender, ImageClickEventArgs e) 
{ 
    if (ListView1.EditItem != null) 
    { 
     ListView1.UpdateItem(ListView1.EditIndex, false); 
     return; // must return, InsertItem is always non-null 
    } 
    if (ListView1.InsertItem != null) // probably an unnecessary test 
     ListView1.InsertNewItem(false); 
} 

어쩌면 우주에서 가장 우아한 해결책을하지만 작동하는 것 같다, 확실하게 밖으로 지옥을 친다 그것은 기본적으로 동작합니다. 어쩌면 내가 ImageButton을 사용하지 않았 더라면 필요하지 않았지만 저장, 편집, 삭제, 실행 취소 및 삽입 기능이 16x16 이미지로 쉽게 표현되는 soo는 수평 공간의 낭비입니다.

어쨌든 나는 그것을 취할 것이다. :-)

관련 문제