2016-10-10 2 views
0

У меня есть gridview, где информация для этой сетки вводится текстовыми полями. Затем я нажимаю кнопку «Сохранить», и эта информация сохраняется в сетке. Для одного из этих текстовых полей оно вызывает меню. Пользователь выбирает кредитора из меню, а идентификатор кредитора сохраняется в HiddenField.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> 

Когда пользователь выбирает кредитор из списка работает эта функция, которая заполняет текстовое поле с именем и скрытый с идентификатором:

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); 
} 

Он называет WebMethod, который находит кредитор в база данных:

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

Если WebMethod возвращает значение, которое он заполняет и скрытое текстовое поле. Так result является кредитором и вызов result.AccountCode дает счета кредиторов код и т.д.

Но когда я пытаюсь вызвать эту скрытый в коде позади него всегда пустой:

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

Проблема заключается в том, когда я нажимаю сохранить кнопка возвращает сообщение, поэтому я теряю все значения. Это не скрытое поле, которое теряет свою ценность, текстовое поле также возвращается обратно

+0

'this.value' только текст, строка, то она не будет иметь' ID' поле – Andrei

+0

@Andrei Он находит значение ID из 'result.ID', которое имеет значение. Это всего лишь цифра. Проблема заключается в вызове 'hfCreditorID.Value' в коде, который возвращается обратно как пустой – user123456789

+0

@Andrei См. Мой отредактированный вопрос. Я упустил некоторые функции, но, надеюсь, это объясняет проблему лучше. – user123456789

ответ

0

Похоже, вы смешиваете/пытаетесь смешать javascript и C#, используемые в коде позади.

Вы отправляете result (это строка в javascript, как уже указывает Андрей) и попытайтесь получить доступ к свойствам, которые не существуют. result.AccountCode?

Ваши имена функций javascript не соответствуют CheckCreditorAccountDetail и OnCheckCreditorDetail.

Почему HiddenField, если вы можете получить значения непосредственно из TextBox в коде позади? См. Мой фрагмент для рабочего примера.

На странице .aspx:

<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> 

А в коде позади:

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

Смежные вопросы