2016-10-10 3 views
0

이 격자에 대한 정보가 텍스트 상자에 입력되는 gridview가 있습니다. 그런 다음 저장 버튼을 클릭하면이 정보가 그리드에 저장됩니다. 이 텍스트 상자 중 하나는 메뉴를 표시합니다. 사용자가 메뉴에서 채권자를 선택하면 채권자 ID가 HiddenField에 저장됩니다. 그것은에서 채권자를 찾는 WebMethod를 호출HiddenField가 코드 뒤에 공백으로 돌아오다

function CheckCreditorAccountDetail(AC) { 
      //AJAX Save 
      if ($.trim(AC).length) { 
       PageMethods.GetCreditorAccountCode(AC, 
              OnCheckCreditorDetail, 
              null 
              ); 
      } 
     } 

function OnCheckCreditorDetail(result) { 
$('#<%= hfCreditorID.ClientID %>').val(result.ID); 
      $('#<%= txtAddEditCreditorCode.ClientID %>').val(result.AccountCode); 
} 

: 사용자가 이름 텍스트 상자와 ID를 가지는에 HiddenField를 채 웁니다이 기능이 실행 목록에서 채권자를 선택

<td class="tblAddDetail" style="border-right:2px"> 
    <a style="float:left;width:16px;height:16px;margin-right:0px;left:0px;top:1px" title="Pick from list..." class="iconSearch" id="btnAddDetailCreditor"></a> 
    <asp:HiddenField ID="hfCreditorID" runat="server" /> 
    <input type="text" id="txtAddEditCreditorCode" class="lookuppopup" onblur="CheckCreditorAccountDetail(this.value)" style="text-transform:uppercase;width:80px" runat="server"/> 
</td> 

데이터베이스는 다음 WebMethod가 값을 반환

[WebMethod] 
    public static Creditor GetCreditorAccountCode(string AccountCode) 
    { 
     try 
     { 
      Creditor c = new Creditor(AccountCode); 
      return c; 
     } 
     catch (Exception ex) 
     { 
      return new Creditor(); 
     } 
    } 

경우는에 HiddenField 및 텍스트 상자를 채 웁니다. 그래서 result는 채권자이며 result.AccountCode를 호출하면 채권자 등 코드

계정 제공하지만 그 뒤에 코드에서이에 HiddenField를 호출 할 때 항상 비어 :

if (!int.TryParse(hfCreditorID.Value, out tmpCredID)) 
{ 
    valid = false; 
} 

내가 저장을 클릭하면 문제는 버튼을 누르면 모든 값을 잃어 버리기 때문에 포스트가 다시 생깁니다. 그것은 가치를 잃는 숨겨진 필드가 아니라 빈 텍스트 상자가 다시오고있다

+0

는'this.value' 그냥 텍스트 문자열, 그것은 필요가 없습니다되는'ID' 필드 – Andrei

+0

@Andrei 값이있는 'result.ID'의 ID 값을 찾습니다. 그것은 단지 숫자입니다. 문제는 코드 숨김에서 hfCreditorID.Value를 호출하는 것이 빈 것으로 나타났습니다 – user123456789

+0

@Andrei 제 편집 된 질문을 참조하십시오. 나는 일부 기능을 생략했지만 잘하면이 문제를 더 잘 설명합니다. – user123456789

답변

0

당신이 믹스/코드 뒤에 사용되는 C#을 자바 스크립트와 혼합하려고하는 것 같습니다.

너는 result (Andrei가 이미 지적한대로 자바 스크립트의 문자열 임)을 보내고 존재하지 않는 속성에 액세스하려고합니다. result.AccountCode?

귀하의 자바 스크립트 기능 이름이 CheckCreditorAccountDetailOnCheckCreditorDetail와 일치하지 않습니다.

코드 숨김 텍스트 상자에서 직접 값을 가져올 수있는 이유는 무엇입니까? 작동 예제는 내 스 니펫을 참조하십시오.

<asp:HiddenField ID="hfCreditorID" runat="server" /> 
<asp:TextBox ID="txtAddEditCreditorCode" runat="server" onblur="OnCheckCreditorDetail(this.value)"></asp:TextBox> 

<script type="text/javascript"> 
    function OnCheckCreditorDetail(result) { 
     $('#<%= hfCreditorID.ClientID %>').val(result); 
    } 
</script> 

그리고 뒤에 코드 : .aspx 페이지에

protected void Button1_Click(object sender, EventArgs e) 
    { 
     txtAddEditCreditorCode.Text = hfCreditorID.Value + " - OK"; 
     //or just get the values from the TextBox without a HiddenField 
     txtAddEditCreditorCode.Text = txtAddEditCreditorCode.Text + " - OK"; 
    } 
+0

제 편집 된 질문을 참조하십시오. 일부 기능을 생략했지만 잘하면이 문제를 더 잘 설명합니다. – user123456789

+0

나는 hiddenfield 대신 textboxes를 사용했지만 그 값을 잃어 버렸습니다. – user123456789

+0

내 스 니펫만으로 빈 페이지를 사용해보십시오. 그게 거기서부터 작동한다면. 아마도 당신은 어딘가에 다시 게시 값을 잃고 있습니다. – VDWWD