![]() |
| |||||||
| S'inscrire | FAQ | Membres | Calendrier | Recherche | Messages du jour | Marquer les forums comme lus |
![]() |
| LinkBack | Outils de la discussion | Modes d'affichage |
| |||
| Bonjour, J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous pourrez m'apporter des réponses et je vous remerci si vous passez quelques minutes à lire ce message. J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> (je simplifie le problème). Admettons que le bouton ajoute un enregistrement dans une table d'une base de donnée SQL Server 2005 à l'aide d'une requète LINQ. Le tableau est mise à jours par l'évenement Load de la page pour afficher tous les enregistrements de la table dans la base de données. Encore une fois j'utilise une requète LINQ pour mettre à jour le tableau. Le problème: quand j'ajoute un enregistrement la requete s'effectue correctement, mais quand la page se ré-affiche le tableau n'est pas à jour. La requète LINQ ne voit tout simplement pas le dernier enregistrement ajouté à la base. Si je rafraichi la page manuellement par contre l'enregistrement apparait comme par magie. J'ai essayé de mettre des context.Refresh(...) un peu partout, rien n'y fait. Si vous avez une idée, surtout n'hésiter pas ! Merci encore. Code: public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { using (var c = new TestDataContext()) { var query = from q in c.GetTable<DataTable1>() select q.Name; foreach (string s in query) { TableRow row = new TableRow(); TableCell cell = new TableCell(); cell.Controls.Add(new Label() { Text = s }); row.Cells.Add(cell); MyTable.Rows.Add(row); } } } protected void Button1_Click(object sender, EventArgs e) { string[] strings = { "hello", "world", "foo", "bar", "toto" }; Random r = new Random(System.DateTime.Now.Millisecond); string s = strings[r.Next(5)]; using (var c = new TestDataContext()) { c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { Name = s }); c.SubmitChanges(); } } } -- Sébastien Mornas EPITA / 3IE |
| | ||||
| ||||
| |
| |||
| Vérifier dans quel ordre sont exécutés les évènements... A priori c'est un simple problème d'ordonnancement. Je pense que dans le "load" on récupère les données pour affichage PUIS dans le click on ajoute une donnée supplémentaire qui n'a donc pas été récupérée au préalable. Déplacer la récupération des données plus tard (par exemple dans le prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans le click du botuon si besoin) devrait résoudre le problème... -- Patrice "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... > Bonjour, > J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous > pourrez m'apporter des réponses et je vous remerci si vous passez quelques > minutes à lire ce message. > > J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> (je > simplifie le problème). Admettons que le bouton ajoute un enregistrement > dans une table d'une base de donnée SQL Server 2005 à l'aide d'une requète > LINQ. Le tableau est mise à jours par l'évenement Load de la page pour > afficher tous les enregistrements de la table dans la base de données. > Encore une fois j'utilise une requète LINQ pour mettre à jour le tableau. > > Le problème: quand j'ajoute un enregistrement la requete s'effectue > correctement, mais quand la page se ré-affiche le tableau n'est pas à > jour. La requète LINQ ne voit tout simplement pas le dernier > enregistrement ajouté à la base. Si je rafraichi la page manuellement par > contre l'enregistrement apparait comme par magie. J'ai essayé de mettre > des context.Refresh(...) un peu partout, rien n'y fait. Si vous avez une > idée, surtout n'hésiter pas ! Merci encore. > > Code: > public partial class _Default : System.Web.UI.Page > { > protected void Page_Load(object sender, EventArgs e) > { > using (var c = new TestDataContext()) > { > var query = from q in c.GetTable<DataTable1>() select q.Name; > foreach (string s in query) > { > TableRow row = new TableRow(); > TableCell cell = new TableCell(); > cell.Controls.Add(new Label() { Text = s }); > row.Cells.Add(cell); > MyTable.Rows.Add(row); > } > } > } > protected void Button1_Click(object sender, EventArgs e) > { > string[] strings = { "hello", "world", "foo", "bar", "toto" }; > Random r = new Random(System.DateTime.Now.Millisecond); > string s = strings[r.Next(5)]; > using (var c = new TestDataContext()) > { > c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { Name > = s }); > c.SubmitChanges(); > } > } > } > > -- > Sébastien Mornas > EPITA / 3IE > |
| |||
| Vérifier dans quel ordre sont exécutés les évènements... A priori c'est un simple problème d'ordonnancement. Je pense que dans le "load" on récupère les données pour affichage PUIS dans le click on ajoute une donnée supplémentaire qui n'a donc pas été récupérée au préalable. Déplacer la récupération des données plus tard (par exemple dans le prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans le click du botuon si besoin) devrait résoudre le problème... -- Patrice "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... > Bonjour, > J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous > pourrez m'apporter des réponses et je vous remerci si vous passez quelques > minutes à lire ce message. > > J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> (je > simplifie le problème). Admettons que le bouton ajoute un enregistrement > dans une table d'une base de donnée SQL Server 2005 à l'aide d'une requète > LINQ. Le tableau est mise à jours par l'évenement Load de la page pour > afficher tous les enregistrements de la table dans la base de données. > Encore une fois j'utilise une requète LINQ pour mettre à jour le tableau. > > Le problème: quand j'ajoute un enregistrement la requete s'effectue > correctement, mais quand la page se ré-affiche le tableau n'est pas à > jour. La requète LINQ ne voit tout simplement pas le dernier > enregistrement ajouté à la base. Si je rafraichi la page manuellement par > contre l'enregistrement apparait comme par magie. J'ai essayé de mettre > des context.Refresh(...) un peu partout, rien n'y fait. Si vous avez une > idée, surtout n'hésiter pas ! Merci encore. > > Code: > public partial class _Default : System.Web.UI.Page > { > protected void Page_Load(object sender, EventArgs e) > { > using (var c = new TestDataContext()) > { > var query = from q in c.GetTable<DataTable1>() select q.Name; > foreach (string s in query) > { > TableRow row = new TableRow(); > TableCell cell = new TableCell(); > cell.Controls.Add(new Label() { Text = s }); > row.Cells.Add(cell); > MyTable.Rows.Add(row); > } > } > } > protected void Button1_Click(object sender, EventArgs e) > { > string[] strings = { "hello", "world", "foo", "bar", "toto" }; > Random r = new Random(System.DateTime.Now.Millisecond); > string s = strings[r.Next(5)]; > using (var c = new TestDataContext()) > { > c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { Name > = s }); > c.SubmitChanges(); > } > } > } > > -- > Sébastien Mornas > EPITA / 3IE > |
| |||
| Vérifier dans quel ordre sont exécutés les évènements... A priori c'est un simple problème d'ordonnancement. Je pense que dans le "load" on récupère les données pour affichage PUIS dans le click on ajoute une donnée supplémentaire qui n'a donc pas été récupérée au préalable. Déplacer la récupération des données plus tard (par exemple dans le prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans le click du botuon si besoin) devrait résoudre le problème... -- Patrice "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... > Bonjour, > J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous > pourrez m'apporter des réponses et je vous remerci si vous passez quelques > minutes à lire ce message. > > J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> (je > simplifie le problème). Admettons que le bouton ajoute un enregistrement > dans une table d'une base de donnée SQL Server 2005 à l'aide d'une requète > LINQ. Le tableau est mise à jours par l'évenement Load de la page pour > afficher tous les enregistrements de la table dans la base de données. > Encore une fois j'utilise une requète LINQ pour mettre à jour le tableau. > > Le problème: quand j'ajoute un enregistrement la requete s'effectue > correctement, mais quand la page se ré-affiche le tableau n'est pas à > jour. La requète LINQ ne voit tout simplement pas le dernier > enregistrement ajouté à la base. Si je rafraichi la page manuellement par > contre l'enregistrement apparait comme par magie. J'ai essayé de mettre > des context.Refresh(...) un peu partout, rien n'y fait. Si vous avez une > idée, surtout n'hésiter pas ! Merci encore. > > Code: > public partial class _Default : System.Web.UI.Page > { > protected void Page_Load(object sender, EventArgs e) > { > using (var c = new TestDataContext()) > { > var query = from q in c.GetTable<DataTable1>() select q.Name; > foreach (string s in query) > { > TableRow row = new TableRow(); > TableCell cell = new TableCell(); > cell.Controls.Add(new Label() { Text = s }); > row.Cells.Add(cell); > MyTable.Rows.Add(row); > } > } > } > protected void Button1_Click(object sender, EventArgs e) > { > string[] strings = { "hello", "world", "foo", "bar", "toto" }; > Random r = new Random(System.DateTime.Now.Millisecond); > string s = strings[r.Next(5)]; > using (var c = new TestDataContext()) > { > c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { Name > = s }); > c.SubmitChanges(); > } > } > } > > -- > Sébastien Mornas > EPITA / 3IE > |
| |||
| Merci Patrice de votre réponse, je vais essayer de changer les évenements qui mettent à jour le tableau. "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: A3D79B0A-9692-4074-9EF2-A6BD22192B2F***microsoft.com... > Vérifier dans quel ordre sont exécutés les évènements... A priori c'est un > simple problème d'ordonnancement. Je pense que dans le "load" on récupère > les données pour affichage PUIS dans le click on ajoute une donnée > supplémentaire qui n'a donc pas été récupérée au préalable. > > Déplacer la récupération des données plus tard (par exemple dans le > prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans le > click du botuon si besoin) devrait résoudre le problème... > > -- > Patrice > > > "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de > discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... >> Bonjour, >> J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous >> pourrez m'apporter des réponses et je vous remerci si vous passez >> quelques minutes à lire ce message. >> >> J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> >> (je simplifie le problème). Admettons que le bouton ajoute un >> enregistrement dans une table d'une base de donnée SQL Server 2005 à >> l'aide d'une requète LINQ. Le tableau est mise à jours par l'évenement >> Load de la page pour afficher tous les enregistrements de la table dans >> la base de données. Encore une fois j'utilise une requète LINQ pour >> mettre à jour le tableau. >> >> Le problème: quand j'ajoute un enregistrement la requete s'effectue >> correctement, mais quand la page se ré-affiche le tableau n'est pas à >> jour. La requète LINQ ne voit tout simplement pas le dernier >> enregistrement ajouté à la base. Si je rafraichi la page manuellement par >> contre l'enregistrement apparait comme par magie. J'ai essayé de mettre >> des context.Refresh(...) un peu partout, rien n'y fait. Si vous avez une >> idée, surtout n'hésiter pas ! Merci encore. >> >> Code: >> public partial class _Default : System.Web.UI.Page >> { >> protected void Page_Load(object sender, EventArgs e) >> { >> using (var c = new TestDataContext()) >> { >> var query = from q in c.GetTable<DataTable1>() select q.Name; >> foreach (string s in query) >> { >> TableRow row = new TableRow(); >> TableCell cell = new TableCell(); >> cell.Controls.Add(new Label() { Text = s }); >> row.Cells.Add(cell); >> MyTable.Rows.Add(row); >> } >> } >> } >> protected void Button1_Click(object sender, EventArgs e) >> { >> string[] strings = { "hello", "world", "foo", "bar", "toto" }; >> Random r = new Random(System.DateTime.Now.Millisecond); >> string s = strings[r.Next(5)]; >> using (var c = new TestDataContext()) >> { >> c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { >> Name = s }); >> c.SubmitChanges(); >> } >> } >> } >> >> -- >> Sébastien Mornas >> EPITA / 3IE >> > |
| |||
| Merci Patrice de votre réponse, je vais essayer de changer les évenements qui mettent à jour le tableau. "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: A3D79B0A-9692-4074-9EF2-A6BD22192B2F***microsoft.com... > Vérifier dans quel ordre sont exécutés les évènements... A priori c'est un > simple problème d'ordonnancement. Je pense que dans le "load" on récupère > les données pour affichage PUIS dans le click on ajoute une donnée > supplémentaire qui n'a donc pas été récupérée au préalable. > > Déplacer la récupération des données plus tard (par exemple dans le > prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans le > click du botuon si besoin) devrait résoudre le problème... > > -- > Patrice > > > "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de > discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... >> Bonjour, >> J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous >> pourrez m'apporter des réponses et je vous remerci si vous passez >> quelques minutes à lire ce message. >> >> J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> >> (je simplifie le problème). Admettons que le bouton ajoute un >> enregistrement dans une table d'une base de donnée SQL Server 2005 à >> l'aide d'une requète LINQ. Le tableau est mise à jours par l'évenement >> Load de la page pour afficher tous les enregistrements de la table dans >> la base de données. Encore une fois j'utilise une requète LINQ pour >> mettre à jour le tableau. >> >> Le problème: quand j'ajoute un enregistrement la requete s'effectue >> correctement, mais quand la page se ré-affiche le tableau n'est pas à >> jour. La requète LINQ ne voit tout simplement pas le dernier >> enregistrement ajouté à la base. Si je rafraichi la page manuellement par >> contre l'enregistrement apparait comme par magie. J'ai essayé de mettre >> des context.Refresh(...) un peu partout, rien n'y fait. Si vous avez une >> idée, surtout n'hésiter pas ! Merci encore. >> >> Code: >> public partial class _Default : System.Web.UI.Page >> { >> protected void Page_Load(object sender, EventArgs e) >> { >> using (var c = new TestDataContext()) >> { >> var query = from q in c.GetTable<DataTable1>() select q.Name; >> foreach (string s in query) >> { >> TableRow row = new TableRow(); >> TableCell cell = new TableCell(); >> cell.Controls.Add(new Label() { Text = s }); >> row.Cells.Add(cell); >> MyTable.Rows.Add(row); >> } >> } >> } >> protected void Button1_Click(object sender, EventArgs e) >> { >> string[] strings = { "hello", "world", "foo", "bar", "toto" }; >> Random r = new Random(System.DateTime.Now.Millisecond); >> string s = strings[r.Next(5)]; >> using (var c = new TestDataContext()) >> { >> c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { >> Name = s }); >> c.SubmitChanges(); >> } >> } >> } >> >> -- >> Sébastien Mornas >> EPITA / 3IE >> > |
| |||
| Merci Patrice de votre réponse, je vais essayer de changer les évenements qui mettent à jour le tableau. "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: A3D79B0A-9692-4074-9EF2-A6BD22192B2F***microsoft.com... > Vérifier dans quel ordre sont exécutés les évènements... A priori c'est un > simple problème d'ordonnancement. Je pense que dans le "load" on récupère > les données pour affichage PUIS dans le click on ajoute une donnée > supplémentaire qui n'a donc pas été récupérée au préalable. > > Déplacer la récupération des données plus tard (par exemple dans le > prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans le > click du botuon si besoin) devrait résoudre le problème... > > -- > Patrice > > > "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de > discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... >> Bonjour, >> J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous >> pourrez m'apporter des réponses et je vous remerci si vous passez >> quelques minutes à lire ce message. >> >> J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> >> (je simplifie le problème). Admettons que le bouton ajoute un >> enregistrement dans une table d'une base de donnée SQL Server 2005 à >> l'aide d'une requète LINQ. Le tableau est mise à jours par l'évenement >> Load de la page pour afficher tous les enregistrements de la table dans >> la base de données. Encore une fois j'utilise une requète LINQ pour >> mettre à jour le tableau. >> >> Le problème: quand j'ajoute un enregistrement la requete s'effectue >> correctement, mais quand la page se ré-affiche le tableau n'est pas à >> jour. La requète LINQ ne voit tout simplement pas le dernier >> enregistrement ajouté à la base. Si je rafraichi la page manuellement par >> contre l'enregistrement apparait comme par magie. J'ai essayé de mettre >> des context.Refresh(...) un peu partout, rien n'y fait. Si vous avez une >> idée, surtout n'hésiter pas ! Merci encore. >> >> Code: >> public partial class _Default : System.Web.UI.Page >> { >> protected void Page_Load(object sender, EventArgs e) >> { >> using (var c = new TestDataContext()) >> { >> var query = from q in c.GetTable<DataTable1>() select q.Name; >> foreach (string s in query) >> { >> TableRow row = new TableRow(); >> TableCell cell = new TableCell(); >> cell.Controls.Add(new Label() { Text = s }); >> row.Cells.Add(cell); >> MyTable.Rows.Add(row); >> } >> } >> } >> protected void Button1_Click(object sender, EventArgs e) >> { >> string[] strings = { "hello", "world", "foo", "bar", "toto" }; >> Random r = new Random(System.DateTime.Now.Millisecond); >> string s = strings[r.Next(5)]; >> using (var c = new TestDataContext()) >> { >> c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { >> Name = s }); >> c.SubmitChanges(); >> } >> } >> } >> >> -- >> Sébastien Mornas >> EPITA / 3IE >> > |
| |||
| En effet l'évenement PreRender permet de résoudre mon problème. Merci infiniment! Sébastien "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de news: eUYRgAm7IHA.4040***TK2MSFTNGP06.phx.gbl... > Merci Patrice de votre réponse, je vais essayer de changer les évenements > qui mettent à jour le tableau. > > "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: > A3D79B0A-9692-4074-9EF2-A6BD22192B2F***microsoft.com... >> Vérifier dans quel ordre sont exécutés les évènements... A priori c'est >> un simple problème d'ordonnancement. Je pense que dans le "load" on >> récupère les données pour affichage PUIS dans le click on ajoute une >> donnée supplémentaire qui n'a donc pas été récupérée au préalable. >> >> Déplacer la récupération des données plus tard (par exemple dans le >> prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans >> le click du botuon si besoin) devrait résoudre le problème... >> >> -- >> Patrice >> >> >> "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de >> discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... >>> Bonjour, >>> J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous >>> pourrez m'apporter des réponses et je vous remerci si vous passez >>> quelques minutes à lire ce message. >>> >>> J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> >>> (je simplifie le problème). Admettons que le bouton ajoute un >>> enregistrement dans une table d'une base de donnée SQL Server 2005 à >>> l'aide d'une requète LINQ. Le tableau est mise à jours par l'évenement >>> Load de la page pour afficher tous les enregistrements de la table dans >>> la base de données. Encore une fois j'utilise une requète LINQ pour >>> mettre à jour le tableau. >>> >>> Le problème: quand j'ajoute un enregistrement la requete s'effectue >>> correctement, mais quand la page se ré-affiche le tableau n'est pas à >>> jour. La requète LINQ ne voit tout simplement pas le dernier >>> enregistrement ajouté à la base. Si je rafraichi la page manuellement >>> par contre l'enregistrement apparait comme par magie. J'ai essayé de >>> mettre des context.Refresh(...) un peu partout, rien n'y fait. Si vous >>> avez une idée, surtout n'hésiter pas ! Merci encore. >>> >>> Code: >>> public partial class _Default : System.Web.UI.Page >>> { >>> protected void Page_Load(object sender, EventArgs e) >>> { >>> using (var c = new TestDataContext()) >>> { >>> var query = from q in c.GetTable<DataTable1>() select q.Name; >>> foreach (string s in query) >>> { >>> TableRow row = new TableRow(); >>> TableCell cell = new TableCell(); >>> cell.Controls.Add(new Label() { Text = s }); >>> row.Cells.Add(cell); >>> MyTable.Rows.Add(row); >>> } >>> } >>> } >>> protected void Button1_Click(object sender, EventArgs e) >>> { >>> string[] strings = { "hello", "world", "foo", "bar", "toto" }; >>> Random r = new Random(System.DateTime.Now.Millisecond); >>> string s = strings[r.Next(5)]; >>> using (var c = new TestDataContext()) >>> { >>> c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { >>> Name = s }); >>> c.SubmitChanges(); >>> } >>> } >>> } >>> >>> -- >>> Sébastien Mornas >>> EPITA / 3IE >>> >> > > |
| |||
| En effet l'évenement PreRender permet de résoudre mon problème. Merci infiniment! Sébastien "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de news: eUYRgAm7IHA.4040***TK2MSFTNGP06.phx.gbl... > Merci Patrice de votre réponse, je vais essayer de changer les évenements > qui mettent à jour le tableau. > > "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: > A3D79B0A-9692-4074-9EF2-A6BD22192B2F***microsoft.com... >> Vérifier dans quel ordre sont exécutés les évènements... A priori c'est >> un simple problème d'ordonnancement. Je pense que dans le "load" on >> récupère les données pour affichage PUIS dans le click on ajoute une >> donnée supplémentaire qui n'a donc pas été récupérée au préalable. >> >> Déplacer la récupération des données plus tard (par exemple dans le >> prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans >> le click du botuon si besoin) devrait résoudre le problème... >> >> -- >> Patrice >> >> >> "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de >> discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... >>> Bonjour, >>> J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous >>> pourrez m'apporter des réponses et je vous remerci si vous passez >>> quelques minutes à lire ce message. >>> >>> J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> >>> (je simplifie le problème). Admettons que le bouton ajoute un >>> enregistrement dans une table d'une base de donnée SQL Server 2005 à >>> l'aide d'une requète LINQ. Le tableau est mise à jours par l'évenement >>> Load de la page pour afficher tous les enregistrements de la table dans >>> la base de données. Encore une fois j'utilise une requète LINQ pour >>> mettre à jour le tableau. >>> >>> Le problème: quand j'ajoute un enregistrement la requete s'effectue >>> correctement, mais quand la page se ré-affiche le tableau n'est pas à >>> jour. La requète LINQ ne voit tout simplement pas le dernier >>> enregistrement ajouté à la base. Si je rafraichi la page manuellement >>> par contre l'enregistrement apparait comme par magie. J'ai essayé de >>> mettre des context.Refresh(...) un peu partout, rien n'y fait. Si vous >>> avez une idée, surtout n'hésiter pas ! Merci encore. >>> >>> Code: >>> public partial class _Default : System.Web.UI.Page >>> { >>> protected void Page_Load(object sender, EventArgs e) >>> { >>> using (var c = new TestDataContext()) >>> { >>> var query = from q in c.GetTable<DataTable1>() select q.Name; >>> foreach (string s in query) >>> { >>> TableRow row = new TableRow(); >>> TableCell cell = new TableCell(); >>> cell.Controls.Add(new Label() { Text = s }); >>> row.Cells.Add(cell); >>> MyTable.Rows.Add(row); >>> } >>> } >>> } >>> protected void Button1_Click(object sender, EventArgs e) >>> { >>> string[] strings = { "hello", "world", "foo", "bar", "toto" }; >>> Random r = new Random(System.DateTime.Now.Millisecond); >>> string s = strings[r.Next(5)]; >>> using (var c = new TestDataContext()) >>> { >>> c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { >>> Name = s }); >>> c.SubmitChanges(); >>> } >>> } >>> } >>> >>> -- >>> Sébastien Mornas >>> EPITA / 3IE >>> >> > > |
| |||
| En effet l'évenement PreRender permet de résoudre mon problème. Merci infiniment! Sébastien "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de news: eUYRgAm7IHA.4040***TK2MSFTNGP06.phx.gbl... > Merci Patrice de votre réponse, je vais essayer de changer les évenements > qui mettent à jour le tableau. > > "Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news: > A3D79B0A-9692-4074-9EF2-A6BD22192B2F***microsoft.com... >> Vérifier dans quel ordre sont exécutés les évènements... A priori c'est >> un simple problème d'ordonnancement. Je pense que dans le "load" on >> récupère les données pour affichage PUIS dans le click on ajoute une >> donnée supplémentaire qui n'a donc pas été récupérée au préalable. >> >> Déplacer la récupération des données plus tard (par exemple dans le >> prérender ou dans un "DataBind" quitte à l'appliquer explicitement dans >> le click du botuon si besoin) devrait résoudre le problème... >> >> -- >> Patrice >> >> >> "Sébastien Mornas" <mornas_s***3ie.fr> a écrit dans le message de groupe de >> discussion : uh1zGBl7IHA.5024***TK2MSFTNGP03.phx.gbl... >>> Bonjour, >>> J'ai un problème dans mon site ASP.NET 3.5 avec LINQ; j'éspère que vous >>> pourrez m'apporter des réponses et je vous remerci si vous passez >>> quelques minutes à lire ce message. >>> >>> J'ai donc une page ASP.NET contenant un <asp:Button> et un <asp:Table> >>> (je simplifie le problème). Admettons que le bouton ajoute un >>> enregistrement dans une table d'une base de donnée SQL Server 2005 à >>> l'aide d'une requète LINQ. Le tableau est mise à jours par l'évenement >>> Load de la page pour afficher tous les enregistrements de la table dans >>> la base de données. Encore une fois j'utilise une requète LINQ pour >>> mettre à jour le tableau. >>> >>> Le problème: quand j'ajoute un enregistrement la requete s'effectue >>> correctement, mais quand la page se ré-affiche le tableau n'est pas à >>> jour. La requète LINQ ne voit tout simplement pas le dernier >>> enregistrement ajouté à la base. Si je rafraichi la page manuellement >>> par contre l'enregistrement apparait comme par magie. J'ai essayé de >>> mettre des context.Refresh(...) un peu partout, rien n'y fait. Si vous >>> avez une idée, surtout n'hésiter pas ! Merci encore. >>> >>> Code: >>> public partial class _Default : System.Web.UI.Page >>> { >>> protected void Page_Load(object sender, EventArgs e) >>> { >>> using (var c = new TestDataContext()) >>> { >>> var query = from q in c.GetTable<DataTable1>() select q.Name; >>> foreach (string s in query) >>> { >>> TableRow row = new TableRow(); >>> TableCell cell = new TableCell(); >>> cell.Controls.Add(new Label() { Text = s }); >>> row.Cells.Add(cell); >>> MyTable.Rows.Add(row); >>> } >>> } >>> } >>> protected void Button1_Click(object sender, EventArgs e) >>> { >>> string[] strings = { "hello", "world", "foo", "bar", "toto" }; >>> Random r = new Random(System.DateTime.Now.Millisecond); >>> string s = strings[r.Next(5)]; >>> using (var c = new TestDataContext()) >>> { >>> c.GetTable<DataTable1>().InsertOnSubmit(new DataTable1() { >>> Name = s }); >>> c.SubmitChanges(); >>> } >>> } >>> } >>> >>> -- >>> Sébastien Mornas >>> EPITA / 3IE >>> >> > > |
| |
| |
![]() |
| Tags: linq, misejour, problme |
| Outils de la discussion | |
| Modes d'affichage | |
| |
| ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| [Linq]Comment récupérer des résultats d'une procédure stockée en Linq | PhilTheGap | Newsgroup microsoft.public.fr.dotnet | 0 | 24/01/2008 13h27 |
| Problème mise en veille suite à mise à jour XP SP2 | philimor | Newsgroup microsoft.public.fr.windowsxp.installation | 1 | 27/12/2007 19h11 |
| Smart-Linq USB cable, problème | Andre Foucart | Newsgroup alt.fr.comp.os.ms-windows.xp | 6 | 17/08/2007 20h28 |
| Problème de mise à jour | Beep Beep | Newsgroup microsoft.public.fr.windows.mediacenter | 0 | 07/02/2007 12h02 |
| problème 3D après mise à jour | Bruno | Newsgroup alt.fr.os.mandrake | 1 | 22/01/2006 20h07 |