Je travaille sur une application Web Forms et j'ai besoin de code HTML dans 2-3 autres endroits.
J'ai créé le contrôle .ascx comme si ce qui représente le code répété:PartialView dans les formulaires Web
protected override void Render(HtmlTextWriter writer)
{
StringBuilder str = new StringBuilder();
while (connRef.Read())
{
str.Append(connRef["some_database_field"]);
}
writer.Write(str.ToString());
base.Render(writer);
}
connRef est une référence à l'objet DataReader que je passe où je besoin de ce morceau de code à rendre.
Dans un autre contrôle, j'utiliser le code suivant:
MSSqlConn s = new MSSqlConn();
StringBuilder str = new StringBuilder();
s.OpenConn("select * from notes order by note_date desc;");
notes.note c = (notes.note)Page.LoadControl(@"/controls/notes/note.ascx");
c.ID = "note";
c.connRef = s;
while (s.Read())
{
str.Append(Html.RenderControl(c));
}
s.CloseConn();
Response.Write(str.ToString());
MSSqlConn est ma classe pour la connexion de base de données. RenderControl rend tout contrôle sous la forme d'une chaîne HTML.
s dans le second extrait de code renvoie un seul enregistrement au lieu de deux. Pour une raison quelconque, s se ferme si je passe la référence à un autre contrôle (c.connRef = s).
Peut-être qu'il me manque quelque chose, je ne sais pas.
Je suis désolé si je ne l'avais pas bien expliqué.
Votre droit. Je me suis concentré sur la fonctionnalité que j'ai oublié que j'ai réellement mis Read dans un autre Read. – lopkiju