.net怎么根据数据库的内容动态生成页面上的属性和值

最近在做一项目,需要动态的生成一些用户属性和对应的值,这些控件和控件拥有的几个属性都是从数据库里面获得,
再完全根据数据库里面存有的数据来生成这个页面
比如说这次数据库里面只有性别,年龄,那么在页面上也就只显示两个,
如果数据库里面以后再需要添加爱好这一项,就需要动态的在页面上显示多一项,而不是再去设计界面。

如果返回给界面层的是DataTable,那么可以通过判断DataTable的column来动态显示数据项;如果标签要显示中文,可以把DataTable的columnName转换成中文的。
如果返回给界面层的是实体对象,那么需要用到反射,根据实体类的属性来动态显示数据项;如果标签要显示中文,可以给类的属性加一个Description的Attribute,里面可以放入相应的中文描述,然后反射的时候再获取中文描述。例如:
/// <summary>
/// 用户名
/// </summary>
[Description("用户名")]
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}追问

如果说我设定了一个字段里面放的是一种性别的描述,分别是男和女,可以用逗号分隔开
也可以说是某一种属性的描述都可以往后增加,只是用逗号分隔开而已,那怎么对应的生成这些描述的控件,比如说在页面上男、女用单选按钮,爱好用复选框来勾选,往后要是多了一个描述,就会多增加一个复选框,这怎么实现。还有在页面上怎么布局?

追答

那你需要把这些配置信息都保存起来,比如这个字段该用什么控件,是单选框、复选框、下拉列表框,还是文本框?如果是选择性的控件这个控件可能会有哪些待选值?这些你都需要保存下来。要不然你的程序是不可能知道该呈现什么控件的。
还有一种办法就是自定义Attribute,在类的自身属性里标明页面上展现这一类数据的时候,该用什么控件,有哪些可选的值。实现原来跟保存到数据库是一样的,都是需要保存这种配置信息,只不过一个存到数据库,一个存到类自身编译过的文件里。
总之就一句话,程序越灵活,那么你为了这种灵活性而需要保存的基础数据就越多。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-30
直接将数据库中的字段名和字段值取出后作相应显示处理:
aspx文件:
<style>
.userinfo{width:400px;}
.userinfo li{list-style-type:none; float:left;width:200px;}
</style>
<form id="form1" runat="server">
<div id="info" runat="server"></div>
</form>

CS文件:
protected void Page_Load(object sender, EventArgs e)
{
......
DataRow dr = ds.Tables[0].Rows[0];//ds是从数据库中查询得到的DataSet
string str = "<ul class='userinfo'>";
foreach (DataColumn col in ds.Tables[0].Columns)
{
str += String.Format("<li>{0}</li><li>{1}</li>", col.ColumnName, dr[col].ToString());
}
str += "</ul>";
info.InnerHtml = str;
}
第2个回答  2012-03-30
完全可以使用linq解决啊~~
linq是基于数据表,自动帮你映射生成实体类~~~
第3个回答  2012-03-29
用循环,后台动态生成前台html。
比如DataTable dt中有你所有的属性,那么就循环dt ,然后在循环里面动态创建html标签,生成之后把生成的标签赋值给前端的div或者其他什么标签就OK了。
相似回答