HiddenField.Événement ValueChanged pas de tir lors de changé à partir de Javascript

Mise à JOUR
J'ai déplacé le Javascript pour la ASPX site au lieu de cela, et a ajouté une publication de la fonction pour cela. Maintenant, il fonctionne. Grâce à @orgtigger et surtout @lucidgold pour les dépenses de leur temps de m'aider!

Voici la mise à jour du code qui fonctionne!

<script type="text/javascript">
    function changevalue(katoid) {
        $('#<%=txtboxchosenkat.ClientID%>').val(katoid);
        __doPostBack('<%= updpnlgridview.ClientID %>', '');
    }
</script>

Code:

<asp:UpdatePanel ID="updpnlgridview" runat="server" UpdateMode="Conditional">        
    <ContentTemplate>
        <asp:TextBox ID="txtboxchosenkat" style="display:none;" runat="server" OnTextChanged="txtboxchosenkat_TextChanged" AutoPostBack="true"></asp:TextBox>
                <asp:GridView ID="gridview" runat="server"></asp:GridView>
    </ContentTemplate>
</asp:UpdatePane

Code-behind:

protected void hidfldchosenkat_ValueChanged(object sender, EventArgs e)
{
    SqlConnection cn2 = new SqlConnection("Server=**,***,***,**;Database=******;
      User Id=******;Password=******;");
    SqlCommand cmd2 = new SqlCommand("SELECT * FROM tblProducts where KatID='" +
      txtboxchosenkat.Text + "'", cn2);
    SqlDataAdapter da2 = new SqlDataAdapter(cmd2);

    da2.SelectCommand.CommandText = cmd2.CommandText.ToString();
    DataTable dt = new DataTable();
    da2.Fill(dt);

    gridview.DataSource = dt.DefaultView;
    gridview.DataBind();
}

Les liens (seulement la partie de code qui permet de liens):

  string line = String.Format("<li><a href='#' onclick='changevalue(" + pid + ");'>{0}", 
  menuText + "</a>");

Vieux Post
J'ai besoin de mettre à jour un GridView basée sur la valeur d'un HiddenField. Je suis actuellement en utilisant un bouton pour remplir le GridView, mais aimerait le faire automatiquement dès que la valeur de la HiddenField changements.

Mais lorsque je change la valeur avec un javascript, puis de l'événement n'est pas déclenché.

(La même chose se produit également dans le cas d'une TextBox et ses OnTextChanged événement.)

Ne sais pas si c'est la façon dont il est censé travailler.

Est-il une raison pourquoi vous devez changer la valeur au lieu de simplement appeler l'événement dans le code? au lieu de TextBox1.Texte = "1"; à l'aide de hidfldchosenkat_ValueChanged(sender,e);
Oui, parce que le code Sélectionne * à partir de la tblProducts où l'ID correspond à la valeur de la hiddenfield. Et j'ai quelques liens qui modifie la valeur du champ caché. Voir la nouvelle mise à jour.
L'autre suggestion, je vais faire ensuite est l'appel de l'événement APRÈS le changement de la valeur cachée dans le code. (puisque rien dans les arguments de l'événement nécessite la transmission de valeurs)
Comment vais-je faire à ce sujet? Je vais avoir pour appeler de l'événement avec le javascript quand je clique sur le "A href onclick=" lien. Mais j'ai essayé qu'en exécutant un autre javascript qui le fait. si l'Un href onclick a fait exécuter deux javascripts 😉
us/library/system.web.l'interface utilisateur.contrôles webcontrols.hiddenfield.valuechanged(v=vs. 110).aspx et tout ce qui ressemble de travail (que Vous n'avez placer votre runat correspondante de la hiddenfield mais qui ne devrait pas faire une différence). La seule autre question que je voudrais poser est de savoir si la mise à jour ne parvient pas à arriver la première fois, ou si vous essayez de mettre à jour de nouveau le processus fonctionne (Liées à la non-déclaration de la valeur). Bonne chance monsieur.

OriginalL'auteur Joe | 2014-06-16