Je sais que j'ai déjà fait quelque chose comme ça, mais je ne sais pas pourquoi cela ne fonctionne pas maintenant. J'ai un ListView avec quelques zones de texte. Je veux lire le texte de ces boîtes quand je clique sur un bouton (linkbutton, peu importe).Les champs de ListView ne sont pas affichés
<asp:ListView runat="server" ID="lv_bar" EnableViewState="true">
<LayoutTemplate>
<table>
<tr>
<th>Foo</th>
</tr>
<tr runat="server" id="itemPlaceholder"></tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><asp:LinkButton ID="lb_delete" CausesValidation="false" runat="server" Text="Del" /></td>
<td><asp:TextBox id="txt_foo" runat="server" /></td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:LinkButton ID="lb_add" CausesValidation="false" runat="server" Text="Add" />
Et voici le code-behind pertinentes choses:
protected void Page_Load(object sender, EventArgs e)
{
lb_chapter_add.Click += lb_chapter_add_Click;
if (!IsPostBack)
{
lv_chapters.DataSource = new List<Foo>() { new Foo() { Name = "harbl"} };
lv_chapters.DataBind();
}
}
void lb_add_Click(object sender, EventArgs e)
{
foreach (ListViewDataItem item in lv_bar.Items)
{
var txt_foo = (TextBox)item.FindControl("txt_foo");
Response.Write("foo: " + txt_foo.Text);
}
Response.Write("<br />the end");
Response.End();
}
Mais ce que je vois quand je rentre du texte dans txt_foo et cliquez sur lb_add est juste « la fin ». Qu'est-ce que je fais mal ici?
ne devrait-il pas être lv_bar dans le foreach? –
ouais, désolé, j'essayais de généraliser le code réel avant de le coller - mais ce n'est pas le problème :) –