2012-10-22 2 views
0

C#의 텍스트 상자에 "클릭"이벤트를 만들려고했습니다. 그래서텍스트 상자 및 AJAX 업데이트 패널 컨트롤에 대한 이벤트 만들기

,

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request["__EVENTARGUMENT"] != null && Request["__EVENTARGUMENT"] == "txt1OnClick") 
    { 
     txt1_Click(); 
    } 

    txt1.Attributes.Add("onclick", this.Page.ClientScript.GetPostBackEventReference(txt1, "txt1OnClick")); 
} 

private void txt1_Click() 
{ 
    ImageMap1.ImageUrl = "guide/1.jpg"; 
} 

그럼 내가 페이지를 다시로드하지 않고 이미지를로드하고 싶어 이런 식으로. 컴파일러는 나는이 나오지 않았어 실제 이벤트 또는 무언가를 나의 새로운 이벤트를 식별하지 않기 때문에,

그래서 나는 AJAX UpdatePanel 컨트롤을 사용하고이

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ImageMap1.ImageUrl = "guide/1.jpg"; 
} 

하지만 내가 만든 이벤트와 함께 잘 작동 알아 내지 못해.

"Refreshing an UpdatePanel Control with an External Button"의 8 단계에 따라 button1_click 이벤트를 추가했습니다.

텍스트 상자의 클릭 이벤트는이 옵션에 표시되지 않습니다 :

textbox

그래서 내 질문은 나, 위 내에서이 이벤트를 볼 수 있도록 System.Web.UI.WebControls.TextBox 클래스 내에서이 이벤트를 추가 할 수있는 방법이 선택권?

그래서 업데이트 패널의 트리거 내에서 텍스트 상자의 클릭 이벤트를 포함 할 수 있습니다.

답변

0

TextBox에 대한 Click 이벤트를 만들려고 할 때마다 사용자가 텍스트 상자를 클릭 할 때마다 서버에 대한 포스트 백이 트리거됩니다 (이벤트 처리의 일부로 뭔가를해야하는지 평가하기도 함). 이는 매우 비효율적입니다. 자바 스크립트를 사용하여 브라우저에서 클릭을 처리 한 다음 클라이언트 측 로직을 사용하여 UpdatePanel을 트리거해야합니다.

이렇게하면 필요할 때 서버에 전화를 걸 수 있지만 필요하지 않은 경우에는 전화를 걸 수 있습니다. 서버 측 이벤트 핸들러가있는 경우 사용자가 TextBox을 클릭 할 때마다 코드가 서버에 다시 게시됩니다 (페이지를 다시로드).

클라이언트 측에서 __doPostBack()을 사용하는 방법에 대한 링크를 읽고 UpdatePanel이 다시 게시를 수행하도록 할 수 있습니다.

http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

+0

당신이 무엇을 의미합니까 "을 사용하여 자바 스크립트 다음 클라이언트 측 로직을 사용하여 UpdatePanel을 트리거"?? 클라이언트 측에서 업데이트 패널을 참조해야합니다. 가능한가요 ?? 미안하지만 제 질문은 관련이 없지만, 전하 께서 걱정하지 않으실 것 같아서요. –

+0

@AbdulMajid 네, 그럴 수 있습니다. 나는 링크로 답변을 업데이트했다. 자세한 내용은 링크를 참조하십시오. – xxbbcc

관련 문제