Probablement la meilleure façon est d'utiliser simplement ItemTemplate du ListView, donc, en substance, le ListView est toujours en mode « édition »:
<asp:ListView
ID="lvwDepartments"
runat="server"
DataKeyNames="department_id"
DataSourceID="sqlDepartments"
ItemPlaceholderID="plcItem">
<ItemTemplate>
<tr>
<td>
<%# Eval("department_id") %>
</td>
<td>
<asp:TextBox runat="server" ID="txtDepartmentName" Text='<%# Eval("dname") %>' Columns="30" />
</td>
</tr>
</ItemTemplate>
<EmptyDataTemplate>
<p>
No departments found.
</p>
</EmptyDataTemplate>
<LayoutTemplate>
<table>
<thead>
<tr>
<th>Department ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder runat="server" ID="plcItem" />
</tbody>
</table>
</LayoutTemplate>
</asp:ListView>
<asp:SqlDataSource
ID="sqlDepartments"
runat="server"
ConnectionString="<%$ ConnectionStrings:HelpDeskConnectionString %>"
SelectCommand="SELECT * FROM [departments]" />
<asp:Button runat="server" ID="cmdSave" Text="Save Changes" OnClick="cmdSave_Click" />
Vous pouvez ensuite lire les valeurs modifiées lorsque l'utilisateur clique sur le bouton :
protected void cmdSave_Click (object sender, EventArgs e)
{
foreach (ListViewItem item in lvwDepartments.Items)
{
if (item.ItemType == ListViewItemType.DataItem)
{
TextBox txtDepartmentName = (TextBox) item.FindControl("txtDepartmentName");
// Process changed data here...
}
}
}
En fait, j'ai fini par faire la même chose mais j'ai juste utilisé un répéteur par rapport à la liste. Merci pour votre réponse! – Don
solution brillante –
Qu'en est-il de la validation? Cela fonctionne réellement pour avoir un résumé de validation en dehors de la liste. Mais il ne dit pas quels enregistrements ont l'entrée invalide. – Jeroen