2016-10-10 10 views
0

私はこのグリッドの情報がテキストボックスで入力されるgridviewを持っています。保存ボタンをクリックすると、この情報がグリッドに保存されます。 これらのテキストボックスの1つでは、メニューが表示されます。ユーザーはメニューから債権者を選択し、債権者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] 
    public static Creditor GetCreditorAccountCode(string AccountCode) 
    { 
     try 
     { 
      Creditor c = new Creditor(AccountCode); 
      return c; 
     } 
     catch (Exception ex) 
     { 
      return new Creditor(); 
     } 
    } 

WebMethodが値を返した場合、それはhiddenfieldとtextboxに値を設定します。だから、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

あなたはミックスしている/ JavaScriptの後ろに使われているC#をミックスしようとしているようです。

あなたはresult(Andreiがすでに指摘しているようにJavaScriptの文字列です)を送信していて、存在しないプロパティにアクセスしようとしています。 result.AccountCode

JavaScriptの関数名がCheckCreditorAccountDetailOnCheckCreditorDetailと一致しません。

コードビハインドのTextBoxから直接値を取得できるのはなぜですか? 実例は私のスニペットを参照してください。

<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

私は非表示フィールドの代わりにテキストボックスを使用しようとしましたが、その値が失われました – user123456789

+0

空白のページだけをスニペットで試してみてください。それがそこから構築されていれば。ポストバックの値がどこかで失われている可能性があります。 – VDWWD

関連する問題