Dan*_*Sh. 6 c# datagrid webforms visual-studio-2010
关于表(在这种情况下是单列)人口的简单问题.尽管这似乎是一个简单的问题,但我从未参与过前端领域,所以就这么说了.
布局为2列8行.就像是.
Name A
LastName B
Age C
BirthDate D
...
Run Code Online (Sandbox Code Playgroud)
第1列是稳定的,如果你想要的话,"标题"不会改变.
A,B,C,D是查询数据库的结果.所以,我能想到的选择是:
绘制一个2Column - 8Row表并将TextBoxes放在A,B,C,D ......字段中.因此,稍后可以使用查询结果填充它们(此选项不是最"漂亮"的选项,因为TextBoxes会改变整个页面使用.CSS文件吸收的设计.
设置数据网格.我认为这里的问题是,为了以后的查询使用,必须更改一些A,B,C,D字段.而且我不确定Datagrids是否适合这一点.
我有什么"好方法"来解决这个问题吗?提前致谢.
编辑.
A,B,C,D数据保存在DataSet中.
对我来说,你描述数据的方式对于a来说并不是真的很适合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; }
}
Run Code Online (Sandbox Code Playgroud)
要将单个实例绑定Person到UI,一个简单的HTML表应该可以正常工作.我在TextBoxes这里使用显示值,但如果你不需要编辑它们,那么只需使用Labels代替.
<table>
<tr><td>Name:</td><td><asp:TextBox ID="txtName" runat="server" /></td></tr>
<tr><td>Last Name:</td><td><asp:TextBox ID="txtLastName" runat="server" /></td></tr>
<tr><td>Age:</td><td><asp:TextBox ID="txtAge" runat="server" /></td></tr>
<tr><td>Birthdate:</td><td><asp:TextBox ID="txtBirthDate" runat="server" /></td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
在这一点Person上,使用代码隐藏将属性绑定到页面上各自的控件是非常简单的.
如果您想使用相同的布局来显示Person页面上的多个实例,请使用ASP.net Repeater.这个标记看起来更像是:
<asp:Repeater ID="repPeople" runat="server">
<ItemTemplate>
<table>
<tr><td>Name:</td><td><asp:TextBox ID="txtName" runat="server" Text='<%# Eval("Name") %>' /></td></tr>
<tr><td>Last Name:</td><td><asp:TextBox ID="txtLastName" runat="server" Text='<%# Eval("LastName") %>' /></td></tr>
<tr><td>Age:</td><td><asp:TextBox ID="txtAge" runat="server" Text='<%# Eval("Age") %>' /></td></tr>
<tr><td>Birthdate:</td><td><asp:TextBox ID="txtBirthDate" runat="server" Text='<%# String.Format("{0:d}", Eval("BirthDate")) %>' /></td></tr>
</table>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
在代码隐藏中,您只需将Person以下DataSource属性的集合绑定到Repeater:
protected void Page_Load(object sender, EventArgs e) {
// A simple example using Page_Load
List<Person> people = new List<Person>();
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();
}
}
Run Code Online (Sandbox Code Playgroud)
注意:您可以使用CSS而不是表来完成类似的布局,但是在绑定单个对象与多个对象之间应用相同的原则.只需将此示例中的表格布局替换为您最终定义的标记.
| 归档时间: |
|
| 查看次数: |
26509 次 |
| 最近记录: |