Répéteur Perd ses données sur les Publications
Répéteur Balisage:
<asp:Repeater ID="stat_Rptr" runat="server">
<ItemTemplate>
<asp:CheckBox ID="IsSelected_ChkBx" runat="server" Text='<%# Eval("Item") %>' />
<asp:TextBox ID="Value_TxtBx" runat="server"></asp:TextBox>
<asp:HiddenField ID="ID_HdnFld" runat="server" Value='<%# Eval("ID") %>' />
</ItemTemplate>
<SeparatorTemplate>
<br></br>
</SeparatorTemplate>
</asp:Repeater>
Code-Behind:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateStatRptr();
}
}
private void PopulateStatRptr()
{
SqlConnection conn;
SqlCommand comm;
SqlDataReader reader;
string _connString = "Data Source=localhost\\SqlExpress;Initial Catalog=MyDb;Integrated Security=True";
conn = new SqlConnection(ConString);
comm = new SqlCommand("SELECT ID, Item FROM Stats", conn);
try
{
conn.Open();
reader = comm.ExecuteReader();
stat_Rptr.DataSource = reader;
stat_Rptr.DataBind();
reader.Close();
}
finally
{
conn.Close();
}
}
- Intéressant séparateur de choix. Pourquoi ne pas simplement
<br/>
? - 😀 confort Visuel
- Croyez-moi, ce n'est pas visuellement réconfortant.
- Juste dans la phase de développement, il est pour moi 🙂
Vous devez vous connecter pour publier un commentaire.
Ok, il semble que la Répétition est une dynamique de contrôle. Si vous êtes à la liaison dans le codebehind que vous avez à réaliser que la zone de texte et cases à cocher dans l'itemtemplate ne pas exister jusqu'à ce que vous DataBind(). Si vous désactivez le viewstate, vous ne les trouverez pas à moins que vous databind à chaque chargement de page. Vous obtenez vos valeurs de viewstate dans ce cas.
Cochez cette lien out.
Lier sur Page_Init au lieu de Page_Load.
Se débarrasser de la
if (!IsPostBack)
code et d'appel de votre fonction à chaque fois.