2010-06-22 3 views
1

J'ai une page aspx avec UpdatePanel. En code-behind, je définis une variable et une fonction publique. La fonction utilise la date d'entrée pour calculer la variable publique de la base de données.Impossible d'obtenir la valeur var côté serveur après la publication dans UpdatePanel

Public myRate As Decimal 
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  
CalcT.Attributes.Add("onchange", "cstgst();") 
    '...... 
    GetTaxRates() 
End Sub 

Public Function GetTaxRates() As Boolean 
     //this function get user input date to calc the data from database 
     Dim mydate As DateTime = UI.GetDate(DateInput.Text) //UI.GetDate is a function to convert string to datetime 
     '.... 
End Function 

En page ASPX, je mis la zone de texte comme: (AutoPostBack, à l'intérieur UpdatePanel)

<asp:UpdatePanel> 
<asp:TextBox ID="DateInput" runat="server" AutoPostBack="true" ></asp:TextBox> 
</asp:UpdatePanel> 

puis-je essayer d'MyRate en javascript comme:

function Test(){ 
    var rate = '<%=myRate%>' 
    //.... 
} 

À première fois Pour charger cette page, je peux obtenir la bonne valeur pour myRate. Mais lorsque j'ai modifié DateInput avec une nouvelle valeur de date, la publication est déclenchée et la fonction GetTaxRates() a été appelée et la bonne valeur a été définie dans myRate lors du débogage du code et de la vérification de la valeur. Le problème est javascript ne peut pas obtenir cette nouvelle valeur. Il obtient toujours la première valeur.

Comment résoudre ce problème?

Répondre

1

Lorsque vous effectuez un post-retour à partir de et updatePanel, seul l'élément dans ce updatePanel sera actualisé. Si votre javascript est en dehors de ce updatePanel, il n'aura pas la nouvelle valeur, il aura toujours juste la valeur de la page d'origine GET.

Pour résoudre ce problème, vous devez obtenir "myRate" dans le panneau de mise à jour afin qu'il soit actualisé à chaque post-retour du panneau. Déplacez votre javascript à l'intérieur du panneau, ou mettez un contrôle caché dans le updatePanel et demandez à votre javascript de lire la valeur de ce contrôle caché, comme ceci: <asp:HiddenField ID="myRate" runat="server" Value="?" />

+0

Merci. Comment déplacer la fonction javescript dans UpdatePanel? Comme façon suivante?

Questions connexes