填充ASP.NET页面上的表

关于表(本例中为单列)总体的简单问题。 尽管这似乎是一个简单的问题,但我从未参与过前端领域,所以就这么说了。

布局为2列8行。 就像是。

Name A LastName B Age C BirthDate D ... 

第1列是稳定的,如果你想要的话,“标题”不会​​改变。

A,B,C,D是查询数据库的结果。 所以,我能想到的选择是:

  1. 绘制一个2Column – 8Row表并将TextBoxes放在A,B,C,D ……字段中。 因此,稍后可以使用查询结果填充它们(此选项不是最“漂亮”的选项,因为TextBoxes使用.CSS文件改变了整个页面所吸收的设计。

  2. 设置数据网格。 我认为这里的问题是,为了以后的查询使用,必须更改一些A,B,C,D字段。 而且我不确定Datagrids是否适合这一点。

我有什么“好办法”来解决这个问题吗? 提前致谢。

编辑。

A,B,C,D数据保存在DataSet中。

对我来说,你描述数据的方式对于DataGrid来说并没有太好用。 此控件最适合您计划以标准表格样式显示的数据,其中列名称跨越顶部,然后显示下面的值行。 如果您打算将对象的一个​​或多个实例(我现在只调用Person )绑定到UI,那么对我来说也有点不清楚。

让我们继续并定义该对象:

 public class Person { public String Name { get; set; } public String LastName { get; set; } public int Age { get; set; } public DateTime BirthDate { get; set; } } 

要将单个Person实例绑定到UI,一个简单的HTML表应该可以正常工作。 我在这里使用TextBoxes来显示值,但是如果你不需要编辑它们,那么只需使用Label

 
Name:
Last Name:
Age:
Birthdate:

在这一点上,使用代码隐藏将Person的属性绑定到页面上的各自控件是非常简单的。

如果您想使用相同的布局在页面上显示Person多个实例,请使用ASP.net Repeater 。 这个标记看起来更像是:

    
Name:
Last Name:
Age:
Birthdate:

在代码隐藏中,您只需将Person的集合绑定到Repeater上的DataSource属性:

 protected void Page_Load(object sender, EventArgs e) { // A simple example using Page_Load List people = new List(); for (int i = 0; i < 10; i++) { people.Add(new Person() {Name = "Test", Age = 10, BirthDate=DateTime.Now, LastName = "Test"}); } if (!IsPostBack) { repPeople.DataSource = people; repPeople.DataBind(); } } 

注意:您可以使用CSS而不是表来完成类似的布局,但是在绑定单个对象与多个对象之间应用相同的原则。 只需将此示例中的表格布局替换为您最终定义的标记。

WebForms中有一个表控件,您应该可以从DataSet填充,请参阅MSDN文档: http : //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.table.aspx