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.
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
Vous devez vous connecter pour publier un commentaire.
Un champ Caché ne sera pas de produire une publication (il n'y a pas de propriété AutoPostBack), ce qui signifie pas de publication qui va se produire lorsque la valeur du champ caché a changé. Toutefois, lorsqu'il existe une publication de la page, puis OnValueChangd événement exécuté si un champ caché de la valeur a changé.
Ainsi, vous devriez essayer les idées suivantes:
1) mise à Jour de votre JavaScript pour changevalue comme suit:
2) Changer votre HiddenField à une zone de texte, mais de définir la Style="display:none;" et définir AutoPostBack="true":
Cet exemple fonctionne très bien pour moi:
JavaScript:
ASPX Code:
C# Code-Behind:
Votre question pourrait être:
Vous pouvez essayer:
Aussi, vous devez METTRE changevalue() à l'intérieur de votre ASPX balises JavaScript et non pas l'enregistrer pour chaque LinkButton.... donc, au lieu de cela, essayez les opérations suivantes:
J'ai mis à jour ma réponse
J'ai essayé de faire cela avec une zone de texte, mais l'événement textchanged" ne déclenche pas, même si j'ai mis le AutoPostBack à true. c'est comme s'il ne reconnaît pas que c'est en cours de modification. Aussi, le _DoPostback(); ne fonctionne pas. Je l'ai mis avec mes autres javascript comme ceci:
code
ScriptManager.RegisterStartupScript(ce.Page, cette.GetType(), "tmp", "<script type='text/javascript'>function changevalue(katoid){document.getElementById('" + hidfldchosenkat.ClientID + "').valeur=katoid;};_doPostBack();</script>", false);Êtes-vous sûr que lorsque vous changez de zone de texte, il n'a pas fonctionné? Avez-vous déclarer hidfldchosenkat_TextChanged??
Saint-s**t, il fonctionne. J'ai changé le Javascript pour ceci: <script type="text/javascript"> function changevalue(katoid) { $('#<%=txtboxchosenkat.ClientID%>').val(katoid); __doPostBack('<%= updpnlgridview.ClientID %>', "); } </script>
OriginalL'auteur lucidgold
Vous pouvez avoir tout cas d'incendie en faisant un __doPostBack appel à JavaScript. Voici un exemple de la façon dont je l'utilise pour me permettre d'envoyer un hiddenfield valeur côté serveur:
ASPX
JavaScript
Ce qui fera appel à la OnValueChanged événement et provoquer une publication. Vous pouvez également définir ce est un déclencheur pour un panneau de mise à jour si vous souhaitez faire un partiel de publication.
OriginalL'auteur BreakfastIsBest