Comment empêcher le retour sur le bouton Asp tout en affichant une fenêtre contextuelle utilisant JQuery

J'ai l'article suivant dans mon GridView:

 <ItemTemplate> <asp:Button UseSubmitBehavior="false" runat="server" ID="btnShow" CssClass="btnSearch" Text="View All" CommandName="ViewAll" OnClientClick="myfunction(); return false;" OnCommand="btnShow_Command" CommandArgument='<%#((GridViewRow)Container).RowIndex%>' /> </ItemTemplate> 

Pour le ItemTemplate j'ai un bouton qui ouvre une fenêtre contextuelle lorsque vous cliquez avec le JQuery suivant:

 $(document).ready(function () { $(".btnSearch").click(function (e) { e.preventDefault(); //centering with css centerPopup(); //load popup loadPopup(); }); }); function myfunction() { } 

Mon code de Command derrière:

 protected void btnShow_Command(object sender, CommandEventArgs e) { int index = 0; if (e.CommandName == "ViewAll") { index = Convert.ToInt32(e.CommandArgument); DataTable cacheTable = HttpContext.Current.Cache["ResultsTable"] as DataTable; string column = cacheTable.Rows[index].Field<string>("Guideline"); string test = BookingResults.Rows[index].Cells[7].Text; string html = HttpUtility.HtmlDecode(column); ResultsDiv.InnerHtml = html; //tbGL.Text = html; //upData.Update(); //MessageBox.Show(index.ToString()); } } 

J'ai ajouté OnClientClick="myfunction(); return false;" Parce qu'il faisait un postback à chaque fois que j'avais cliqué. Si j'ai plusieurs lignes, cela ne fonctionne que la première fois que je clique, mais à tout moment, la fenêtre contextuelle n'est pas affichée lorsqu'un autre ou le même bouton est cliqué.

Comment puis-je le résoudre, peu importe le bouton sur lequel le popup est affiché sans faire de postback?

En fait, vous n'avez pas montré la mise en œuvre de votre méthode myfunction () , dans le cas où la méthode myfunction avait une erreur de syntaxe alors l'événement OnClientClick sera annulé et il sera post-retour / soumettre le formulaire au serveur.

Essayez de supprimer l'appel de OnClientClick et mettez simplement en œuvre votre logique sur jquery sur un événement de clic en utilisant le sélecteur de classe comme suit

 $(document).ready(function () { $(".btnSearch").click(function (e) { e.preventDefault(); alert($(this).val() + " Clicked"); // you can put your method mymethod() here // you can put youe popup logic here return false; }); }); 

Vous pouvez également voir cet exemple de js violon

Mettez-le sur la balise ou <%: Html.BeginForm%> étiquette

 OnClientClick="return myfunction(); function myfunction(){ // you can put youe popup logic here return false; } 

En utilisant comme cela, votre bouton ne fait jamais de retour.