我是一名PHP开发人员,但现在我正在使用C#学习asp.net,因为这是我们公司的要求。我熟悉C#和oops的基础知识。我面临的问题是我学会了如何从数据库中检索值并创建数据表。从这里我知道我可以绑定一个网格控件来显示数据,但这种技术限制我做一些我自己的东西到datagrid。现在我想要的是,如果我需要构建一个表,我曾经在PHP中对表进行硬编码 像:
<?php
*/
retrive the data from the database and store it in an array using $row_sql = mysql_fetch_array() function
/*
....
....
?>
<table>
<tr>
<td><?php $row_sql['fieldname']; ?></td>
</tr>
....
....
</table>
?>
我知道我可以用转发器做这样的事情,但不确定我是否想要使用这样的控件或仅仅因为我对asp.net风格不是那么熟悉。
所以有人可以指导我如何做到这一点? 或者,如果我知道如何在PHP中学习它,请告诉我如何学习asp.net?
更新: 好的,这就是我所做的,但我仍然收到错误。
首先我通过从dataadapter填充数据集来创建数据库,然后我按照建议使用了代码,但是我收到以下错误:
foreach语句不能对'System.Data.DataTable'类型的变量进行操作,因为'System.Data.DataTable'不包含'GetEnumerator'的公共定义
答案 0 :(得分:1)
您不仅可以使用网格控件 - 您可以通过循环显示特定数据表中的数据行来生成自己的标记。例如,您可以执行以下操作:
<%
foreach (DataRowView dr in myDataTable.AsDataView())
{
Response.Write("<tr>");
Response.Write("<td>" + dr["Column1"].ToString() + "</td>");
Response.Write("<td>" + dr["Column2"].ToString() + "</td>");
Response.Write("<td>" + dr["Column3"].ToString() + "</td>");
Response.Write("</tr>");
}
%>
这将循环遍历数据表中的每个数据行并写出1-3列的内容(当然,假设它们的名称是“Column1”,“Column2”和“Column3”),每个都在它们自己的TD中,包裹在TR中。但我相信你已经明白了......
我的建议是宁愿实现一个MVC框架(无论是ASP.NET MVC框架还是你自己的框架),因为它更容易适应,来自PHP背景。
编辑我更新了代码段以使用DataView类型进行枚举...只需记住包含System.Data命名空间以使用“AsDataView()”扩展方法。或者,您可以按如下方式获取DataView:
<%
foreach (DataRowView dr in new DataView(myDataTable))
{
// code...
}
%>
答案 1 :(得分:1)
有几种方法可以实现这一目标:
类似的东西:
<%
foreach (var row in myDataTable)
{%>
<tr>
<td> + <%=row[1].ToString()%> + </td>
<td> + <%=row[1].ToString()%> + </td>
<td> + <%=row[1].ToString()%> + </td>
.....
<td> + <%=row[n].ToString()%> + </td>
<% }
%>
3。使用table server control。
对于有PHP经验的人,我认为2号会更有意义。