[C# .Net] Aller en bas de la page via un <asp:Button>

Aller en bas de la page via un <asp:Button> [C# .Net] - C#/.NET managed - Programmation

Marsh Posté le 25-11-2006 à 11:15:09    

Bonjour à tous :)
 
J'ai un bouton dans ma page .aspx :  

Code :
  1. <asp:Button ID="myButton" Onclick="myButton_Click" runat="server" />
  2. ...
  3. <a name="bottom" />


Maintenant, je voudrais qu'en plus de faire son action "myButton_Click" la page soit reloadée avec à la fin de l'URL ceci : #bottom (pour aller en bas de la page). Le truc, c'est qu'il faut que la page se reload avec (PostBack=true).  
Je ne suis pas arrivé à faire cela, même avec du javascript :'(
 
Merci beaucoup si vous avez une idée :)

Reply

Marsh Posté le 25-11-2006 à 11:15:09   

Reply

Marsh Posté le 26-11-2006 à 16:24:41    

Personne ne sait ? :'(

Reply

Marsh Posté le 27-11-2006 à 16:11:23    

Si ça existe, c'est en JavaScript.
C# en fait rien côté client...
 
Si tu as un réponse sur le forum Javascript, merci de nous transmettre la reponse :)

Reply

Marsh Posté le 27-11-2006 à 23:48:18    

Coucou
 
Oui, il s'agit bien de Javascript. Seulement, en plus du javascript (qui redirige vers le bas de la page), je veux aussi que mon bouton C# exécute du code C#. Et c'est le fait d'allier javascript (client) + C# (server) qui me pose problème :'(
Merci quand même, et si qqn a une idée :)


Message édité par Roodie le 27-11-2006 à 23:48:52
Reply

Marsh Posté le 28-11-2006 à 17:08:09    

Attend... tu veux exécuter du code serveur.
Donc tu vas avoir un aller-retour serveur.
Donc tu n'as plus besoin de ton Javascript pour aller au bas de la page.
On est d'accord ?
J'ai comme l'impression que non :)
 
Sinon tu veux exécuter du code C# sur ton serveur, mais sans faire d'aller-retour serveur ???
T'es sûr que c'est une appli web que tu veux faire ?
 
Enfin, oui, il est possible de faire les deux : en Javascript tu peux déclencher le fonctionnement d'un bouton, ce qui te permet de faire du code client suivi de code serveur.
Mais du coup, ça sert à rien d'aller en bas de la page vu qu'elle va être rechargée...

Reply

Marsh Posté le 28-11-2006 à 22:48:44    

Oui, j'ai bien compris que javascript puis C# ne servait à rien puisque la page est reloadée. Et je sais ce que c'est que la notion client-serveur :)
Ce que je veux en fait, c'est exécuter du C# puis javascript quand j'appuie sur un <asp:Button...>.  
Tu saurais ça ?  
En tout cas, merci beaucoup pour ton aide :)

Reply

Marsh Posté le 28-11-2006 à 23:00:10    

-- en cours d'édition [:magicbuzz]
 
bah moi je vote, et je dis que c'est pas gagné en fait :D
 
pkoi pas faire un simple lien <a href="#bas"> ?


Message édité par MagicBuzz le 28-11-2006 à 23:38:10
Reply

Marsh Posté le 29-11-2006 à 13:35:39    

Comprend pas...
Tu veux exécuter du C# au 'Click' du bouton. Ok, pas de pb. Du coup ta page se recharge.
 
Après tu veux éxécuter du Javascript ?
Bein pas de problème non plus, tu colles ton script au début de ta page et tu t'arrange pour qu'il soit appelé au chargement...
 
Bon... tu veux pas nous dire ce que tu veux faire fonctionnellement, paske là je comprend pas où tu veux arriver...


Message édité par _Mose_ le 29-11-2006 à 13:35:57
Reply

Marsh Posté le 29-11-2006 à 15:06:27    

c clair qu'un bon gros :
 
<input type="submit" onclick="document.location.href='#bas';return false';" value="Va voir en bas si j'y suis">
 
Bah ce serait autrement plus simple :o

Reply

Marsh Posté le 29-11-2006 à 22:31:06    

Bon d'accord, je vous explique la situation  :D  
Je fais un forum en asp.net. Ma page .aspx en question est la même que la page que vous voyez :  
- un thread avec tous ses posts
- un <asp:Button...OnClick="btReply_Click"...> "Reply"
 
Lorsque l'utilisateur appuie sur "Reply", je veux que ça fasse 2 choses, dans cet ordre :  
- ça va dans la méthode btReply_Click() pour vérifier son authentification entre autres. Côté C# donc.  
- ensuite, ça redirige vers le bas de la page pour que l'utilisateur puisse entrer son post (la textbox étant tout en bas de la page)
 
Voilà :)
Vos propositions ne conviennent pas exactement en fait, mais avec ces explications, vous comprendrez mieux.  
Merci beaucoup encore et si vous savez, n'hésitez pas :)

Reply

Marsh Posté le 29-11-2006 à 22:31:06   

Reply

Marsh Posté le 29-11-2006 à 22:38:40    

Bah c pourtant simple à la base :
(en .NET 2.0)
 


<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /><br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <br />
        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox>&nbsp;</div>
    </form>
</body>
</html>


 

Code :
  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. public partial class _Default : System.Web.UI.Page
  11. {
  12.     protected void Page_Load(object sender, EventArgs e)
  13.     {
  14.         TextBox1.Text = "en haut";
  15.     }
  16.     protected void Button1_Click(object sender, EventArgs e)
  17.     {
  18.         TextBox1.Text = "en bas";
  19.         TextBox1.Focus();
  20.     }
  21. }

Reply

Marsh Posté le 29-11-2006 à 23:01:56    

Ah ouais :)
C'était TextBox1.Focus(); ça résoud mon problème. J'y avais même pas pensé :)
Merci bien !
Et pour la ptite histoire, tu saurais appeler du C# suivi du javascript comme j'ai cru qu'il fallait que je le fasse ?  
Merci beaucoup en tout cas :)


Message édité par Roodie le 29-11-2006 à 23:02:36
Reply

Marsh Posté le 30-11-2006 à 00:49:53    

Bah, tu crées un literal, et tu vais un truc du genre (pas certifié ceci dit) :
 

monLiteral.Text = @"<script type=\"text/javascript\">document.location.href=\"#bas\";</script>";


Message édité par MagicBuzz le 30-11-2006 à 00:50:05
Reply

Marsh Posté le 30-11-2006 à 22:30:23    

Euh... je ne vois pas comment je pourrais utiliser ce Literal pour résoudre mon problème. Tu peux développer un peu ? Merci bien :)

Reply

Marsh Posté le 30-11-2006 à 23:25:06    

Code :
  1. protected void Button1_Click(object sender, EventArgs e)
  2.     {
  3.         TextBox1.Text = "en bas";
  4.         TextBox1.Focus();
  5.         HtmlContainerControl script = new HtmlGenericControl("script" );
  6.         script.Attributes.Add("type", "text/javascript" );
  7.         script.InnerHtml = "alert(\"plop\" );";
  8.         Panel1.Controls.Add(script);
  9.     }


 
Ajoute juste un contrôle "<asp:panel>" d'id "Panel1" dans ta page HTML.
Tu verras que par ce moyen tu peux éxécuter du JS généré à la volée.

Reply

Marsh Posté le 01-12-2006 à 23:24:04    

Ah ouais ça marche ! Chui impressionné :)
Merci bcp pour le tip :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed