2013-12-14 4 views
0

ASP.net 응용 프로그램을 만들고 있습니다. ListBox 컨트롤에 항목을 채우고 ListBox의 PreRender 이벤트를 사용하여 컨트롤의 가장 큰 항목에 따라 너비를 설정합니다.목록 상자에서 항목을 선택하면 초점을 제거하는 사전 렌더링 이벤트가 발생합니다.

그러나 ListBox가 렌더링 된 후 ListBox에서 항목을 처음 클릭하면 PreRender 이벤트가 발생하고 ListBox에서 포커스가 제거됩니다.이 이벤트는 ListBox가 이미 렌더링되어 있기 때문에 불필요하게 실행됩니다. ListBox에서 항목을 두 번 클릭하면 PreRender 이벤트가 실행되지 않고 포커스가 유지됩니다.

이 동작이 정상입니까? 무엇이이 문제를 일으킬 수 있습니까?

기본값 인 포스트 백이 아닌 경우 ListBox가 PageLoad에 채워집니다. 목록 상자는 텍스트 상자의 TextChanged 이벤트에 가득

편집을 (텍스트 상자는 DB에서 검색에 사용됩니다) :

은 내가 PreRender 이벤트에서 주석과 동작은 사라되지 않습니다. 지금 나는 그것에서 포커스를 제거하고 ListBox에서 항목을 선택할 때 이것이 TextBox의 PostBack에 의해 발생할 수 있다고 생각하고 있습니다.

이러한 점에 대한 증거 : TextBox (로드 표시기)의 요청의 시작과 끝 사이에 gif가 표시되며, ListBox에서 처음 항목을 선택하면 gif가 표시됩니다. 렌더링. 두 번째로 문제는 없습니다.

AutoPostBack 속성을 사용하여 TextBox 컨트롤에서 포커스를 잃을 때 서버에 자동으로 다시 게시할지 여부를 지정합니다. 포커스를 변경하는 가장 일반적인 방법은 TextBox 컨트롤에서 Enter 키 또는 Tab 키를 누르는 것입니다.

내가보고 한 동작이 왜 발생하는지 알아 냈습니다. 어떻게 든 TextBox가 포커스를 잃을 때 다시 게시하지 않도록 할 수 있습니까? TextChanged에 게시하는 것은 아주 쉽습니다.

답변

0

AutoPostBack 속성을 사용하여 TextBox 컨트롤에서 포커스를 잃을 때 서버에 자동으로 다시 게시할지 여부를 지정합니다. 포커스를 변경하는 가장 일반적인 방법은 TextBox 컨트롤에서 Enter 키 또는 Tab 키를 누르는 것입니다.

내가보고 한 동작이 왜 발생하는지 알아 냈습니다. 초점을 잃을 때 autopostoback을 멈추는 방법을 지금 탐색 할 것입니다.

관련 문제