【问题标题】:How do I bind data from the database table to an html control like div or tab?如何将数据库表中的数据绑定到 div 或 tab 等 html 控件?
【发布时间】:2012-01-13 23:28:08
【问题描述】:

我正在设计一个网站。在该网站中,只想使用 html 控件来显示数据。我在文件后面的代码中从我的数据库表中获取一些数据,数据存储在数据表中。我想以网格格式显示该数据。但我不想使用任何 asp.net 控件,例如 gridview、repeater 控件等。

如何做到这一点?

【问题讨论】:

  • 您将标签从PHP 更改为ASP ??你真的知道你想问什么吗??投反对票。
  • @Márcio:一开始我没有添加任何技术相关的标签,但是在阅读了这个问题的一个回复后,我意识到我应该添加 asp.net 技术的标签。

标签: c# asp.net html datatable


【解决方案1】:

ASP.NET 控件无论如何都会呈现为 HTML 控件,因此通过使用 ASP.NET 控件,您将只能使用 HTML 控件。

例如,当传递给客户端(浏览器)时,ASP.NET GridView 会呈现为 HTML Table

如果您只想使用 HTML 控件来完全控制样式和属性,您可以使用 Repeater 控件和 table

<table>
  <asp:repeater id="rep" runat="server">
    <itemtemplate>
       <tr>
          <td><%#eval("ColumnName")%></td>
       </tr>
    </itemtemplate>
  </asp:repeater>
</table>

【讨论】:

  • 我想你还没有阅读我的问题。我不想使用 asp.net 控件。
  • 我知道当我们使用 asp.net 控件时,浏览器会将其呈现给 html 控件。所以我想减少浏览器的控制渲染过程。为此,我想用 html 控件来做。
  • 所以这是一个与性能相关的问题?转发器不会渲染成任何 HTML,它只是循环通过您的 ItemTemplate 渲染内部的 HTML。
  • 不,不是性能相关的问题。我只想将数据表绑定到 html 控件,它应该重复到数据表的末尾。
  • 您不使用 ASP.NET 控件获得所需结果的原因是什么?
【解决方案2】:

如果您真的不想使用网格控件,那么只需将占位符控件添加到页面即可。

<asp:PlaceHolder id="placeHolder" runat="server"></asp:PlaceHolder>

然后使用 Table 和 Row 对象动态构建网格,然后在构建页面后添加到占位符。

placeHolder.Controls.Clear();
Table table = new Table()

//.. foreach loop through your data sourde

   TableRow row = new TableRow()
   TableCell cell = new TableCell()

   cell.Text = "your data element";

   row.Cells.Add(cell);
   table.Rows.Add(row);

//.. close loop

placeHolder.Controls.Add(table);

这个link 做了类似的事情

我以前这样做过(不记得为什么),但您将无法轻松地对数据进行分页或排序。你需要一个列表视图或类似的东西。但这会生成你想要的网格。我仍然建议查看 ListView、Repeater 等......

【讨论】:

    【解决方案3】:

    另一种方法是返回 html 字符串,例如:

    在 aspx 页面上放置一个 div,

    <div id="divHtml" runat="server"  > </div>
    

    代码隐藏

    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    
    // instantiate a datagrid
    DataGrid dg = new DataGrid();
    dg.DataSource = dataTable; //your dataTable
    dg.DataBind();
    dg.RenderControl(htw);
    divHtml.InnerHtml = sw.ToString();  
    

    这里 sw 将为您提供完整呈现的 html 字符串。 Sw 也可以添加到响应流中,例如 response.Write(sw.ToString());

    希望对你有帮助。

    【讨论】:

      【解决方案4】:

      您可以使用 MVC 样式标记:

      <%foreach (var row in myData) {%>
          <%=row["somedata"]%>
      <%}%>
      

      这在技术上没有问题。关键是你为什么要这样做?如果您使用的是 Web 表单,那么 Web 控件会以更简洁的方式为您完成上述操作。如前所述,您可以使用不添加任何 html 但会在其模板中重复任何 html 的转发器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        • 2012-03-11
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 2011-08-11
        相关资源
        最近更新 更多