2008-11-24 5 views
3

Je voudrais savoir comment mettre toutes mes lignes ListView en mode d'édition à la fois. Je ne cherche pas le comportement traditionnel d'éditer chaque rangée une à la fois. La réponse peut être soit C# ou VB.NET.Comment éditer toutes les lignes d'un contrôle ASP.NET ListView en même temps?

Aussi, si possible, tout exemple de code de sauvegarde des changements de chaque ligne après que toutes les lignes ont été éditées.

Répondre

10

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... 
     } 
    } 
} 
+0

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

+0

solution brillante –

+0

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

Questions connexes