Как я лучше всего заполняю HTML-таблицу в ASP.NET?

сначала создайте файл jsp: и напишите текстовое поле, которое вы хотите для ex:

после этого создайте свой класс сервлета:

public class test{

protected void doGet(paramter , paramter){

String name  = request.getparameter("name");
 }

}
5
задан Zack Peterson 4 September 2008 в 14:01
поделиться

8 ответов

@Geoff

Такой оператор Eval был на самом деле добавлен в 2,0, но если производительностью является важная Оценка, должен избежаться, так как это использует Отражение.

Повторитель является довольно хорошим способом сделать его, хотя это могло бы быть быстрее для генерации таблицы в коде:

Страница ASPX:

<table class="report" id="bookTable" runat="server">
        <tr>
            <th>Published</th>
            <th>Title</th>
            <th>Author</th>
            <th>Price</th>
        </tr>
 </table>

Код позади:

Protected Sub Page_Load( ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostback Then
        BuildTable()
    End If
End Sub

Private Sub BuildTable()
    Dim db As New BookstoreDataContext
    Dim bookCollection = from b in db.Books _
                         Order By b.Published _
                         Select b
    Dim row As HtmlTableRow
    Dim cell As HtmlTableCell

    For Each book As Books In bookCollection
        row = New HtmlTableRow()
        cell = New HtmlTableCell With { .InnerText = b.Published.ToShortDateString }
        row.Controls.Add(cell)
        cell = New HtmlTableCell With { .InnerText = TryNbsp(HttpContext.Current.Server.HtmlEncode(b.Title)) }
        row.Controls.Add(cell)
        cell = New HtmlTableCell With { .InnerText = TryNbsp(HttpContext.Current.Server.HtmlEncode(b.Author))
        row.Controls.Add(cell)
        cell = New HtmlTableCell With { .InnerText = Format(b.Price, "c") }
        row.Controls.Add(cell)
        bookTable.Controls.Add(row)
    Next

Я предполагаю, что это зависит от того, как важная скорость Вам. Для пользы простоты я думаю, что пошел бы с Повторителем.

4
ответ дан 13 December 2019 в 05:45
поделиться

Управление ListView, начатое с платформы 3.5, могло бы быть немного лучшим решением. Ваша разметка была бы похожа на это:

<asp:ListView runat="server" ID="ListView1" 
    DataSourceID="SqlDataSource1">
  <LayoutTemplate>
    <table runat="server" id="table1" runat="server" >
      <tr runat="server" id="itemPlaceholder" ></tr>
    </table>
  </LayoutTemplate>
  <ItemTemplate>
    <tr runat="server>
      <td runat="server">
        <asp:Label ID="NameLabel" runat="server" 
          Text='<%#Eval("Name") %>' />
      </td>
    </tr>
  </ItemTemplate>
</asp:ListView>
3
ответ дан 13 December 2019 в 05:45
поделиться

Это - то, для чего GridView.

<asp:GridView runat="server" DataSourceID="SqlDataSource1">
   <Columns>
      <asp:BoundField HeaderText="Published" DataField="Published" />
      <asp:BoundField HeaderText="Author" DataField="Author" />
   </Columns>
</asp:GridView>
1
ответ дан 13 December 2019 в 05:45
поделиться

В.Net 3.0 + можно заменить ItemDataBound к asp:Literal путем выполнения чего-то вроде этого:

<ItemTemplate>
            <tr>
                <td><%# Eval("published") %></td>
                ...

где "опубликовано" название поля в данных, которые Вы связали с повторителем

Править: @Alassek: Я думаю, что хит производительности отражения часто переоценивается. Очевидно, необходимо сравнить производительности приложения, но хит Оценки, вероятно, измеряется в миллисекундах. Если Ваше приложение не служит многим параллельным хитам, это, вероятно, не проблема, и простота кода с помощью Оценки, наряду с ним являющийся хорошим разделением презентации, делает его хорошим решением.

2
ответ дан 13 December 2019 в 05:45
поделиться

Я использовал бы GridView (или DataGrid, если Вы используете более старую версию ASP.NET).

<asp:GridView ID="gvBooks" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField HeaderText="Published" DataField="Published" />
        <asp:BoundField HeaderText="Title" DataField="Title" />                     
        <asp:BoundField HeaderText="Author" DataField="Author" />
        <asp:BoundField HeaderText="Price" DataField="Price" />
    </Columns>
</asp:GridView>

С некоторым кодом - позади:

Private Sub gvBooksRowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvBooks.RowDataBound
     Select Case e.Row.RowType
        Case DataControlRowType.DataRow

            ''' Your code here '''

     End Select
End Sub

Можно связать его похожим способом. Событие RowDataBound - то, в чем Вы нуждаетесь.

1
ответ дан 13 December 2019 в 05:45
поделиться

Я соглашаюсь с Geoff, единственное время, которое мы используем Literals то, если мы хотим сделать что-то другое с данными.
Например, мы могли бы хотеть a DueDate поле для высказывания "Сегодня" или "Вчера" вместо фактической даты.

1
ответ дан 13 December 2019 в 05:45
поделиться

Если бы Вам не нужен ASP.NET обработанное редактирование cabilities, я избегал бы DataGrid и GridView... они обеспечивают ненужное чрезмерное увеличение размера.

0
ответ дан 13 December 2019 в 05:45
поделиться

ALassek записал:

… генерируют таблицу в коде …

Мне нравится вид этого! Это кажется Гораздо менее вероятным для создания исключения на этапе выполнения из-за изменения имени поля или опечатки.

0
ответ дан 13 December 2019 в 05:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: