2010-03-11 4 views
6

C#에서 asp.net 3.5를 사용하고 있습니다. 사용자가 txtProductID에 ProductID를 입력 할 때 데이터베이스 조회를 수행해야합니다. 이 자바 스크립트는 서버 쪽에서 호출해야하기 때문에 자바 스크립트를 사용하지 않는 것이 좋습니다. 마이크로 소프트의 JScript 런타임 오류 : 텍스트 상자 onblur 이벤트에 대한 데이터베이스 쿼리 수행

 protected void Page_Load(object sender, EventArgs e) 
    { 
     txtProductID.Attributes.Add("onblur", "LookupProduct()"); 
    } 

     protected void LookupProduct() 
    { 
     //Lookup Product information on onBlur event; 
    } 

내가 오류 메시지가 : 나는 웹 페이지의 Page_Load 이벤트에서이 코드를 작성 객체가 어떻게이 문제를 해결 할 수 기대? 여기에 참조로

답변

3

TextBox.TextChanged 이벤트를 사용하십시오.

ASPX 마크 업 :

<asp:TextBox ID="txtProductID" runat="server" AutoPostBack="true" OnTextChanged="txtProductID_TextChanged" /> 

Codebehind가 :

protected void txtProductID_TextChanged(object sender, EventArgs e) 
{ 
    // do your database query here 
} 
+0

이 답변은 @ durilai가하지 않는 동안 PostBack을 유발할 것이라는 점에 유의하십시오. – jrummell

1

이이 트릭을 수행해야합니다 http://www.codedigest.com/CodeDigest/80-Calling-a-Serverside-Method-from-JavaScript-in-ASP-Net-AJAX---PageMethods.aspx

이러한 컨트롤은

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True" /> 
<asp:TextBox ID="txtTest" onblur="LookupProduct()" runat="server" /> 

이 자바 스크립트입니다

<script language="javascript"> 
function LookupProduct() 
{ 
    PageMethods.LookupProduct('',OnSuccess, OnFailure); 
} 

function OnSuccess(result) { 
    if (result) 
    { 
    } 
} 

function OnFailure(error) { 
} 
</script> 

이 서버 sidewebmethod

[WebMethod] 
public static bool LookupProduct() 
{ 
    return true; 
} 
에게되어 있습니다
+0

^^ 이미이 동작을 수행하는 더 좋은 방법 인 UpdatePanel을 사용하는 동안 onTextChanged 이벤트 처리기 또는 제안 된 PageMethods 방법은 무엇입니까? – Dienekes

+0

다릅니다. 다시 게시 하시겠습니까? 그렇다면'ontextchanged'는 아마 갈 길입니다. @ jrummel의 대답은 코드가 적지 만 그의 마크 업과 관련된 답변을 작성했습니다. –

5

onblur는 클라이언트 측 이벤트입니다. LookupProduct은 서버 측 방법입니다. 하나를 다른 것으로부터 참조 할 수는 없습니다. 두 요소 사이에 연관성이 전혀 없습니다.

클라이언트 이벤트에서 다시 게시 (ClientScriptManager.GetPostBackEventReference 사용)를 트리거하거나 Microsoft ASP.NET Ajax과 같은 라이브러리를 사용하여 Ajax 콜백을 구현해야합니다.

또는 당신이 경우에, 정말 모든 흐림에이 이벤트를 해고해야하고, 텍스트가있는 경우에만 는 단순히 서버 측 TextBox.OnChanged 이벤트를 사용하고 true에 텍스트 상자의 AutoPostBack 속성을 설정할 수 있습니다, 변경 . AutoPostBack을 기억해야합니다. 그렇지 않으면 아무데도 나타나지 않습니다.

+0

TextBox의 LostFocus/onBlur에서 이벤트를 발생시켜야합니다. – user279521

+0

@ user279521 : ASP.NET에는 서버 측 'LostFocus' 이벤트가 없으므로'onblur' 이벤트까지 연결해야한다면 두 번째 단락에 표시된대로 다시 게시/콜백을 구성합니다. – Aaronaught

+0

@ user279521 어떤 자바 스크립트 이벤트 유형에서 서버 측 메서드를 호출 할 수 있도록 아래에서 내 대답을보십시오. –

관련 문제