Как редактировать все строки в элементе управления ASP.NET ListView одновременно? - PullRequest
3 голосов
/ 24 ноября 2008

Я хотел бы знать, как перевести все мои строки ListView в режим редактирования одновременно. Я не ищу традиционное поведение редактирования каждой строки по одному. Ответ может быть в C # или VB.NET.

Также, если возможно, любой пример кода сохранения изменений каждой строки после того, как все строки были отредактированы.

1 Ответ

10 голосов
/ 25 ноября 2008

Вероятно, самый простой способ - это просто использовать ItemTemplate ListView, поэтому, по сути, ListView всегда находится в «режиме редактирования»:

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

Затем вы можете прочитать измененные значения, когда пользователь нажимает кнопку:

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...
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...