2012-03-09 4 views
0

다음 코드와 RaisePostBackEvent 함수를 사용하여 GridView 클릭 가능 행을 만들었습니다.GridView에서 DropDownList를 포함하는 행을 클릭 가능하게하고 DropDownList를 분리합니다.

protected void gvResults_RowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     e.Row.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(this, e.Row.RowIndex.ToString())); 
    } 
} 

GridView에는 셀 중 하나에 대한 DropDownList 컨트롤도 있습니다. 문제는 선택을 변경하기 위해 DropDownList를 클릭하면 행의 onclick이 트리거된다는 것입니다. 이로 인해 DropDownList에 대한 옵션 목록이 표시되지만 행에 대한 onclick도 처리 되었기 때문에 사용할 수 없습니다.

DropDownList의 onmouseover에 플래그를 설정하고 RaisePostBackEvent 함수에서 플래그를 확인했지만 부분적으로 성공했습니다. 이로 인해 RaisePostBackEvent의 기능이 차단되었지만 행 onclick이 계속 발생하여 DropDownList가 여전히 사용할 수없는 상태에 있음을 의미합니다.

그래서 행의 다른 부분을 클릭 할 때 onclick이 계속 작동하도록하면서 DropDownList 함수를 만들려면 어떻게해야합니까?

참고 : 현재 .NET 2.0에서 작업 할 수 없습니다.

+1

이 게시물보기 : http://stackoverflow.com/questions/6491627/prevent-table-row-onclick-event-to-fire-when-clicking-button-inside-therow – jmaglio

답변

1

원하는 것은 Click 이벤트 전파를 중지하는 것입니다. 이 작업을 수행하는 가장 쉬운 방법은 전파 중지 사업부/스팬 요소 요소를 포장하는 것 : 다른 브라우저 인 stopPropagation을 사용하는 동안

<div onclick="if (event.stopPropagation){ event.stopPropagation(); } else if(window.event){ window.event.cancelBubble=true; } "> 
DropDownList element here... 
</div> 

IE는 event.cancelBubble 속성을 사용합니다.

GridView에서 DropDownList 요소를 생성하는 방법을 잘 모르겠습니다. ItemTemplate에 추가하거나 RowCreated 이벤트에서 요소를 만들 때 요소를 추가하는 방법을 찾을 수 있습니다.

관련 문제