Динамическая таблица для редактирования данных базы данных SQL (редактируемая таблица) - PullRequest
0 голосов
/ 21 июля 2011

У меня есть таблица, которая создается с использованием базы данных SQL и помещается в asp:Repeater для отображения данных.

Таблица отображается нормально, со всеми соответствующими данными. Все счастливы!

Но информация в таблице может иногда изменяться пользователем. Вместо того, чтобы иметь отдельную страницу или даже отдельный раздел, где пользователь может вносить изменения, я предложил идею сделать каждую ячейку в таблице текстовым полем. И на странице, текст каждого текстового поля устанавливается в значения базы данных.

Таким образом, таблица будет отображаться и будет точно такой же, за исключением того, что каждая ячейка будет редактируемой. Но у меня проблемы с тем, чтобы заставить его работать. То, что у меня так далеко, это:

<asp:Repeater ID="rptPending" runat="server">
    <HeaderTemplate>
        <table id="tblPending" cellpadding="0" cellspacing="0" border="0" class="display">
            <thead>
                <tr>
                    <th>Company Name</th>
                    <th>Telephone</th>
                    <th>Fax Number</th>
                    <th>Address Line 1</th>
                    <th>Address Line 2</th>
                    <th>City</th>
                    <th>Postcode</th>
                    <th>Company User</th>
                </tr>
            </thead>
            <tbody>
    </HeaderTemplate>
    <ItemTemplate>
        <form id="form" runat="server">
            <tr>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_companyName") %>"></asp:TextBox></td>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_telephone")%>"></asp:TextBox></td>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_faxNo")%>"></asp:TextBox></td>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_addressLn1")%>"></asp:TextBox></td>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_addressLn2")%>"></asp:TextBox></td>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_city")%>"></asp:TextBox></td>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_postCode")%>"></asp:TextBox></td>
                <td><asp:TextBox ID="companyName" runat="server" AutoPostBack="true" Text="<%# Eval("_name")%>"></asp:TextBox></td>
            </tr>
        </form>
    </ItemTemplate>
    <FooterTemplate>
        </tbody> </table>
    </FooterTemplate>
</asp:Repeater>

В методе Old между тегами [td] у меня буквально просто был оператор <% # Eval ("variable")%>. Поэтому я изменил его на тег asp: Textbox.

Я получаю сообщение о том, что серверный тег сформирован неправильно.

Если кто-нибудь знает обходной путь или лучший метод, он был бы очень признателен:)

p.s. Нет ссылок на asp:DataTable или GridView. Я не заинтересован в них.

1 Ответ

1 голос
/ 21 июля 2011

Причина, по которой вы получаете «не правильно сформированную» ошибку, заключается в том, что вы используете двойные кавычки вокруг оператора eval и внутри них.Просто используйте одинарные кавычки в качестве окружающих кавычек.

<td>
   <asp:TextBox 
       ID="companyName" 
       runat="server" 
       AutoPostBack="true" 
       Text='<%# Eval("_companyName") %>'
    >
   </asp:TextBox>
 </td>

Это, однако, не решит вашей общей проблемы, связанной с попыткой редактирования нескольких элементов через повторитель.Если текст в любом из этих полей будет изменен, как вы узнаете, к какой строке это относится?

Получайте удовольствие от того, что вы пытаетесь, но я подозреваю, что вы заинтересуетесь DataTable и GridView.

...