How do I edit all rows in an ASP.NET ListView control at the same time?

后端 未结 1 503
余生分开走
余生分开走 2021-01-06 18:36

I would like to know how to put all of my ListView rows into edit mode at once. I am not looking for the traditional behavior of editing each row one at a time. The answer

相关标签:
1条回答
  • 2021-01-06 19:03

    Probably the easiest way is to just use the ListView's ItemTemplate, so in essence, the ListView is always in "edit mode":

    <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" />
    

    You can then read the changed values when the user clicks the button:

    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 讨论(0)
提交回复
热议问题