문제

가(파생)메뉴의 제어,표시하는 오히려 큰 항목의 목록에서 사용자 정의 데이터 소스입니다.나는 사용하지 않도록해야 ViewState 메뉴에서 방지하는 매우 성가"수 없습니다를 선택합 또는 장애인 메뉴 선택을 취소 항목에"때 다른 제어의 원인이 현재 선택을 변경하십시오

을 때 불행하게도,ViewState 사용에 대한 메뉴를 생성한 포스트백 by 메뉴지 않을 올리는 모든 이벤트입니다.는 경우 사용 ViewState,the OnMenuItemClick 이벤트가 발생합니다.내가 사용하지 않으면 ViewState,OnMenuItemClick 가 발생하지 않습니다.내가 난다.

제가 떠날 필요가 ViewState 메뉴에 대해,그래서 어떻게 관리할 수 있 다시 게시는 실제적인 관심 부탁 드립니다.

이 시점에서 나를 향해 기대어를 사용하는 메뉴로,이벤트,구문 분석__EVENTTARGET 여부를 확인하려면 메뉴,그리고 거기서 떠나 지나가시다가.이 기술적 과정을 다시 게시 이벤트를 하기 전에 그것을 일반적으로는 확인 것 같아요.

더 좋은 아이디어가?

도움이 되었습니까?

해결책 2

나는 생각 밖의 본질은 문제입니다.를 사용하여 반사판을 우리가 볼 수 있는 중요한 부분(s)의 낮은 수준의 방법을 처리하는 실제시 게시고 다음 요소로서,이벤트를 발생시키는:

string str = HttpUtility.HtmlDecode(eventArgument);
...
MenuItem item = this.Items.FindItem(str.Split(new char[] { '\\' }), 0);
if (item != null)
    this.OnMenuItemClick(new MenuEventArgs(item));

당신이 볼 수 있듯이 MenuEventArgs 은 손으로 MenuItem.찾을 수 없는 경우에는 현재 수집 항목과 일치하는 들어오는 게시 데이터를,그 후에 이벤트가 발생하지 않습니다.와 ViewState 장애인,메뉴에 없는 항목(그들이 재건되었을 사용하여 ViewState).그래서 행사되지 않습니다.

이러한 문제를 해결하기 위해,나는 말했지 메뉴를 자신을 구축하는 동안 부하를 사용하여 아직-데이터를 업데이트(이 시점에서 같은 것으로 끝에서의 마지막 요청 시).이것은 본질적으로 동일한으로 재건에서 메뉴 ViewState,그래서 저는 나쁜 생각하지 않에서 성능과 관련,또는 어떤 것이다.OnMenuItemClick 동하고 다으로 예상된다.마지막으로,사전 렌더링하는 동안 나는 알 메뉴를 다시 다시 한 번,그래서 그것을 반영하는 변화 중에 일어난 다시 게시 처리 부분의 라이프사이클을 기술합니다.

저는 많은 시간을 낭비에 이렇게 희망이 정보를 도울 수 있는 누군가가 다른 사람에도 유사한 상황에 놓여 있습니다.

다른 팁

그래,당신이 선택할 수 있습니다,사용하거나 viewstate 을 다시 바인딩 제어할 수 있습니다 또는 바인딩 전에 이벤트 발생(Page_Load 는 괜찮습니다).

난 항상 반드시 바인딩에서 새롭게 Page_PreRender 지만,없는 경우에는 변경에 이 포스트백(변화가 일어났 다른 곳에)페이지에 없는 이유를 묶습니다.

대신할 수 있습니다 바인딩에서만 특정 이벤트가 알고 있는 경우 그 변경해야합니다.

에 Page_Load 다시 바인딩 제어하 sitemapdata 확인하는 경우 IsPostBack.

if (IsPostBack) {
            Menu.DataBind();
}

이 나를 위해 일을 줄일 수 viewstate.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top