[ASP.NET] Mon éternel problem de refresh...

Mon éternel problem de refresh... [ASP.NET] - C#/.NET managed - Programmation

Marsh Posté le 14-03-2006 à 10:46:21    

J'ai une page.
 
Dans la partie supérieure, j'ai une liste de liens.
OnCommand dessus, je charge dans la partie inférieure des informations correspondantes dans un forumlaire.
Dans ce cas, ça marche bien : je clique, et immédiatement j'ai les infos qui se chargent.
 
Par contre, en bas du formulaire, j'ai un bouton "save", qui met à jour la base de données.
Là, la liste des liens ne se rafraîchit pas. Je dois recharger manuellement la page une second fois pour voir mes modifs.
 
Et ça me gonfle, c'est à chaque fois pareil, et à chaque fois je dois faire des bidouilles prises de tête pour que ça marche.
 
Est-ce qu'il y a un moyen "simple" pour faire marcher la chose ?
 
Voici le code de ma page :
 

Code :
  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Web;
  7. using System.Web.SessionState;
  8. using System.Web.UI;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.HtmlControls;
  11. namespace bci
  12. {
  13. /// <summary>
  14. /// Summary description for WriteNews.
  15. /// </summary>
  16. public class WriteNews : System.Web.UI.Page
  17. {
  18.  private Queries commander;
  19.  protected System.Web.UI.WebControls.TextBox boxNumnew;
  20.  protected System.Web.UI.WebControls.TextBox boxTitre;
  21.  protected System.Web.UI.WebControls.Calendar boxDatdeb;
  22.  protected System.Web.UI.WebControls.Calendar boxDatfin;
  23.  protected System.Web.UI.WebControls.ListBox boxTypdes;
  24.  protected System.Web.UI.WebControls.Button btnSave;
  25.  protected System.Web.UI.WebControls.LinkButton btnNewnew;
  26.  protected System.Web.UI.WebControls.TextBox boxNewtxt;
  27.  protected System.Web.UI.WebControls.Repeater newsList;
  28.  private void Page_Load(object sender, System.EventArgs e)
  29.  {
  30.   commander = new Queries(string.Format((string) Application["cnxString"], (string) Application["dbLogin"], (string) Application["dbPass"], (string) Application["dbTNS"]));
  31.   // Ajouter le code pour bloquer si Session vide !
  32.   if (Session.Count == 0 || Session["login"] == null || Session["typtie"] == null || Session["codsoc"] == null || Session["password"] == null)
  33.   {
  34.    Session.Clear();
  35.    Response.Redirect("Default.aspx", true);
  36.   }
  37.   if (!commander.RunTestQuery())
  38.   {
  39.    Session.Clear();
  40.    Response.Redirect("Default.aspx", true);
  41.   }
  42.   if (!habilitation.getHabilitation((string)Session["habilitation"], habilitation.Habilitations.writeNews))
  43.   {
  44.    Response.Redirect("Collection.aspx", true);
  45.   }
  46.   newsList.DataSource = commander.LoadNewsForAuthor((decimal)Session["codsoc"], (string)Session["typtie"], (string)Session["login"]);
  47.   newsList.DataBind();
  48.   commander.webLog(Session["codsoc"], Session["typtie"], Session["login"], Request.ServerVariables["http_host"], Request.FilePath, Session["sigdep"], Session["codpro"]);
  49.  }
  50.  private void Page_Unload(object sender, System.EventArgs e)
  51.  {
  52.   try{commander.Close();}
  53.   catch {};
  54.   commander = null;
  55.  }
  56.  protected void NewsList_DataBound(object sender, RepeaterItemEventArgs e)
  57.  {
  58.   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  59.   {
  60.    DataRowView dr = ((DataRowView) e.Item.DataItem);
  61.    if (dr != null)
  62.    {
  63.     Label newLinkTxt = ((Label) e.Item.FindControl("txtTitre" ));
  64.     LinkButton newLinkBtn = new LinkButton();
  65.     newLinkBtn.Text = ((string) dr["newtit"]).ToString();
  66.     newLinkBtn.CommandName = "numnew";
  67.     newLinkBtn.CommandArgument = ((decimal) dr["numnew"]).ToString();
  68.     newLinkBtn.Command += new CommandEventHandler(NewLinkBtn_Command);
  69.     newLinkTxt.Controls.Add(newLinkBtn);
  70.     ((Label) e.Item.FindControl("txtDatdeb" )).Text = ToolBox.DateGnxToString((string) dr["datdeb"], "-" );
  71.     ((Label) e.Item.FindControl("txtDatfin" )).Text = ToolBox.DateGnxToString((string) dr["datfin"], "-" );
  72.    }
  73.   }
  74.  }
  75.  protected void NewLinkBtn_Command(Object sender, CommandEventArgs e)
  76.  {
  77.   if (e.CommandArgument != null)
  78.   {
  79.    DataRow dr = commander.LoadNewsForID(System.Convert.ToDecimal((string)e.CommandArgument)).Rows[0];
  80.    boxNumnew.Text = ((decimal)dr["numnew"]).ToString();
  81.    boxTitre.Text = (string)dr["newtit"];
  82.    if ((string)dr["datdeb"] != " " )
  83.    {
  84.     boxDatdeb.SelectedDate = ToolBox.DateGnxToDate((string)dr["datdeb"]);
  85.    }
  86.    if ((string)dr["datfin"] != " " )
  87.    {
  88.     boxDatfin.SelectedDate = ToolBox.DateGnxToDate((string)dr["datfin"]);
  89.    }
  90.    switch ((string)dr["typdes"])
  91.    {
  92.     case " ":
  93.      boxTypdes.SelectedIndex = 0;
  94.      break;
  95.     case "CLI":
  96.      boxTypdes.SelectedIndex = 1;
  97.      break;
  98.     case "REP":
  99.      boxTypdes.SelectedIndex = 2;
  100.      break;
  101.     default:
  102.      break;
  103.    }
  104.    boxNewtxt.Text = (string)dr["newtxt"];
  105.   }
  106.  }
  107.  protected void btnNewnew_Command(Object sender, CommandEventArgs e)
  108.  {
  109.   boxNumnew.Text = string.Empty;
  110.   boxTitre.Text = string.Empty;
  111.   boxDatdeb.SelectedDate = DateTime.Now;
  112.   boxDatfin.SelectedDate = DateTime.Now;
  113.   boxTypdes.SelectedIndex = 0;
  114.   boxNewtxt.Text = string.Empty;
  115.  }
  116.  #region Web Form Designer generated code
  117.  override protected void OnInit(EventArgs e)
  118.  {
  119.   //
  120.   // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  121.   //
  122.   InitializeComponent();
  123.   base.OnInit(e);
  124.  }
  125.  /// <summary>
  126.  /// Required method for Designer support - do not modify
  127.  /// the contents of this method with the code editor.
  128.  /// </summary>
  129.  private void InitializeComponent()
  130.  {   
  131.   this.newsList.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.NewsList_DataBound);
  132.   this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
  133.   this.btnNewnew.Command += new CommandEventHandler(this.btnNewnew_Command);
  134.   this.Unload += new System.EventHandler(this.Page_Unload);
  135.   this.Load += new System.EventHandler(this.Page_Load);
  136.  }
  137.  #endregion
  138.  private void btnSave_Click(object sender, System.EventArgs e)
  139.  {
  140.   commander.CreateNews(boxNumnew.Text, (decimal)Session["codsoc"], (string)Session["typtie"], (string)Session["login"], boxTitre.Text, boxNewtxt.Text, " ", ToolBox.DateStringToGnx(boxDatdeb.SelectedDate), ToolBox.DateStringToGnx(boxDatfin.SelectedDate), boxTypdes.SelectedValue);
  141.  }
  142. }
  143. }


 
=> Sur le "btnSave_Click" ça marche pas bien (new créée ou modifiée, mais liste non rafraîchie), alors que sur le "btn_Newnew_Command" ou "NewLinkBtn_Command" ça marche bien (données du forumlaire mises à jour)...

Message cité 1 fois
Message édité par Arjuna le 14-03-2006 à 10:51:15
Reply

Marsh Posté le 14-03-2006 à 10:46:21   

Reply

Marsh Posté le 14-03-2006 à 17:19:39    

Arjuna a écrit :

J'ai une page.
 
...


 
A mon sens, tu devrais avoir une methode qui fasse la requete et le bind de ta liste de liens
et ds ton evenement save, a la fin, tu relances la methode de bind de ta liste de lien non ?

Reply

Marsh Posté le 14-03-2006 à 19:46:45    

Hmmm, de mémoire, ça ne fait rien.
En fait, le "save" semble se lancer une fois la page finie de générer. Et c'est justement mon problème.
 
Testerai demain.

Reply

Marsh Posté le 15-03-2006 à 09:22:14    

Arjuna a écrit :

Hmmm, de mémoire, ça ne fait rien.
En fait, le "save" semble se lancer une fois la page finie de générer. Et c'est justement mon problème.
 
Testerai demain.


 
je veux dire ds ta proc btnsave_click (désolé pour le manque de precision), tu as ta commande qui fait ta sauvegarde...juste apres appelles ta methode qui fait le bind / rechargement de tes liens (dans la m procedure)

Reply

Marsh Posté le 16-03-2006 à 10:13:04    

That just works ! :love: :bounce: :pt1cable:
 
Comprends pas pkoi d'habitude ça marche pas... Maybe c'est pas le même problème que d'habitude :D

Reply

Sujets relatifs:

Leave a Replay

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