2017-12-20 12 views
0

더 이상하는 ASP에 초점을 때 발동하는 C#을 기능을 가져 오기 : 텍스트 상자

<div id="pm-search" class="main-box-body-only min-padding clearfix"> 
 
          <div class="searchFormNoBox span12"> 
 
           <span> 
 
            <label>App Tracking ID</label> 
 
            <asp:TextBox ID="txtAppTrackingID_App" runat="server" Width="100px" OnTextChanged="txtAppTrackingID_App_TextChanged" AutoPostBack="True"></asp:TextBox> 
 
           </span> 
 
           <span> 
 
            <label>Old Status</label> 
 
            <asp:DropDownList ID="ddlOldStatus_App" runat="server" AutoPostBack = "true" Width="170px"> 
 
             <asp:ListItem Value="" Selected="True"></asp:ListItem> 
 
             <asp:ListItem Value="AWAITING_CONF">AWAITING_CONF</asp:ListItem> 
 
             <asp:ListItem Value="AWAITING_DUPLICATE_FILE">AWAITING_DUPLICATE_FILE</asp:ListItem> 
 
             <asp:ListItem Value="CANCELLED">CANCELLED</asp:ListItem> 
 
             <asp:ListItem Value="COMPLETE">COMPLETE</asp:ListItem> 
 
             <asp:ListItem Value="CONFIRM_APPROVED">CONFIRM_APPROVED</asp:ListItem> 
 
             <asp:ListItem Value="CONFIRM_REJECTED">CONFIRM_REJECTED</asp:ListItem> 
 
             <asp:ListItem Value="COPY_FINISHED">COPY_FINISHED</asp:ListItem> 
 
             <asp:ListItem Value="COPY_STARTED">COPY_STARTED</asp:ListItem> 
 
             <asp:ListItem Value="DUPLICATE_FILE_APPROVED">DUPLICATE_FILE_APPROVED</asp:ListItem> 
 
             <asp:ListItem Value="DUPLICATE_FILE_REJECTED">DUPLICATE_FILE_REJECTED</asp:ListItem> 
 
             <asp:ListItem Value="EMAIL_READY">EMAIL_READY</asp:ListItem> 
 
             <asp:ListItem Value="EMAIL_COMPLETE">EMAIL_COMPLETE</asp:ListItem> 
 
             <asp:ListItem Value="ERROR">ERROR</asp:ListItem> 
 
             <asp:ListItem Value="FILE_PROCESSING">FILE_PROCESSING</asp:ListItem> 
 
             <asp:ListItem Value="FILE_READY">FILE_READY</asp:ListItem> 
 
             <asp:ListItem Value="FILE_RECEIVED">FILE_RECEIVED</asp:ListItem> 
 
             <asp:ListItem Value="HOLD">HOLD</asp:ListItem> 
 
             <asp:ListItem Value="PROCESSING_APP">PROCESSING_APP</asp:ListItem> 
 
             <asp:ListItem Value="PROCESSING_QC">PROCESSING_QC</asp:ListItem> 
 
             <asp:ListItem Value="QUICKCHANGE_READY">QUICKCHANGE_READY</asp:ListItem> 
 
             <asp:ListItem Value="READY">READY</asp:ListItem> 
 
             <asp:ListItem Value="SCHEDULED">SCHEDULED</asp:ListItem> 
 
             <asp:ListItem Value="WEBVIEW_READY">WEBVIEW_READY</asp:ListItem> 
 
            </asp:DropDownList> 
 
           </span>

내가 일이 원하는 것을
protected void txtAppTrackingID_App_TextChanged(object sender, EventArgs e) 
    { 
     applicationTrackingID = txtAppTrackingID_App.Text; 
     ApplicationSettings applicationStatus = new ApplicationSettings(appTrackingID); 
     appStatus = applicationStatus.StatusCode; // get the full status code name 

     ddlOldStatus_App.SelectedValue = appStatus; 

    } 

, 위의 기능이 실행됩니다 때 텍스트 상자 "txtAppTrackingID_App "더 이상 초점이 맞지 않습니다.

함수의 목적은보기에 다음을 추가하는 ID

+0

브라우저에서 포커스를 변경하는 것은 클라이언트 이벤트입니다. 서버 코드는 페이지가 렌더링 될 때까지만 실행됩니다. 서버 코드에서이 이벤트를 직접 처리 할 수있는 방법은 없습니다. 자바 스크립트를 작성해야합니다. 전체 페이지의 포스트 백을 강제 실행하는 코드를 작성할 수는 있지만 잔인 할 수 있습니다. 서버에 Ajax 게시를 수행하고 응답을 얻고 그에 따라 클라이언트 코드를 업데이트하는 코드를 작성할 수 있습니다. 하지만 JavaScript로 클라이언트에서 모든 일을 처리하는 것이 가장 쉬운 방법 일 것입니다. –

+0

javascript로 이것을 구현하는 방법에 대한 조언이 있습니까? 필자는 전에 자바 스크립트를 한번도 해 보지 못했지만, 제 목적 상 더 좋을 것이라고 생각합니다. –

+0

좋은 소식은 JavaScript를 사용한 적이 없다면이 작은 것이 시작하기에 알맞은 곳이라는 것입니다. 주어진 엘리먼트가 포커스를 잃었을 때 이벤트 핸들러를 할당하고, 이벤트 핸들러에서'select'의 선택된 값을 설정해야합니다. 나쁜 소식은 SO 답변에서 처음부터 그렇게하는 것이 너무 많다는 것입니다. –

답변

0

와 객체의 상태와 일치하는 드롭 다운 메뉴에서 값을 선택하는 것입니다.

<script type="text/javascript"> 
    $("#txtAppTrackingID_App").blur(function() { 
     $.post("/controller/method" + id); 
    }); 
</script> 
+1

https://stackoverflow.com/questions/3863927/lost-focus-method-for-asp-net-textbox 및 https://stackoverflow.com/questions/10949937/how-to-call-a-controller-method -from-javascript –

+1

질문은 webforms와 관련이 있습니다. 보기가 없으며 Ajax를 수행하는 것이 웹 양식과 다릅니다. 누군가가 이것에 익숙하지 않다면 MVC에 특화된 대답으로 인해 혼란이 생길 ​​수 있습니다. –

1

기억 : 서버 코드의 텍스트 상자는 결국 함께 작동하도록 브라우저 HTML을 렌더링하는 데 사용되는 임시 구조에 대해 다루고 있습니다. 실제 텍스트 상자 은 서버가 아닌 브라우저에만 있습니다. 이 같은 UI 변경이 발생할 때 C# 서버 코드를 실행하는 유일한 방법은 서버에 으로 다시 게시하는 것입니다.

브라우저가 브라우저에 새로운 HTTP 요청을 보내고 로컬 DOM을 삭제 한 다음 HTTP 응답을 기다리면 새 DOM이 생성되어 화면에 표시됩니다. 이는 서버가 전체 페이지에 대해 완전히 새로운 HTML 세트를 생성한다는 것을 의미합니다. 단지 하나의 기능 만 실행하는 것이 아닙니다.

정말 그렇게하고 싶은가요? 대부분의 경우, 당신은 정말로 자바 스크립트로이 작업을 완전히 처리하기를 원합니다.

+0

나는 이것이 클라이언트 쪽에서 처리되기를 간절히 바란다. 나는 자바 스크립트에 대한 경험이 없다.나는 trackingID를 기반으로 필요한 정보를 얻기 위해 sql을 사용할 webmethod를 만들었습니다. Objectives C에서 게시 한 코드 스 니펫은 내가 원하는 것에 대해 작동합니까? –

0

WebForms에서이 작업을 수행 한 방법은 다음과 같습니다 (WebMethod 사용).

는 PageNameGoesHere.aspx에서의 WebMethod 만들기 :

[WebMethod] 
public static bool DoSomething(int id) 
{ 
    // do something on id 
} 

아약스를 통해 그것을 호출하는 자바 스크립트 만들기 (흐림에 대한 검증되지 않은, 내 것이 클릭에 있었다). C가 블러 이벤트에 객관적으로 어떤 영향을 줄지 확실하지 않을 수 있습니다.

$('form').on('blur', '#txtAppTrackingID', function() { 
    var data = new Object(); 
    data['id'] = 12; 

    $.ajax({ 
    url: 'PageNameGoesHere.aspx/DoSomething', 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify(data), 
    success: function (response) { 
     // whatever you want to do on success. 
    }, 
    error: function (response) { 
     // probably some messaging something went wrong. 
    } 
    }) 
});