.net怎么根据数据库的内容动态生成页面上的属性和值
最近在做一项目,需要动态的生成一些用户属性和对应的值,这些控件和控件拥有的几个属性都是从数据库里面获得,再完全根据数据库里面存有的数据来生成这个页面比如说这次数据库里面只...
最近在做一项目,需要动态的生成一些用户属性和对应的值,这些控件和控件拥有的几个属性都是从数据库里面获得,
再完全根据数据库里面存有的数据来生成这个页面
比如说这次数据库里面只有性别,年龄,那么在页面上也就只显示两个,
如果数据库里面以后再需要添加爱好这一项,就需要动态的在页面上显示多一项,而不是再去设计界面。 展开
再完全根据数据库里面存有的数据来生成这个页面
比如说这次数据库里面只有性别,年龄,那么在页面上也就只显示两个,
如果数据库里面以后再需要添加爱好这一项,就需要动态的在页面上显示多一项,而不是再去设计界面。 展开
4个回答
展开全部
如果返回给界面层的是DataTable,那么可以通过判断DataTable的column来动态显示数据项;如果标签要显示中文,可以把DataTable的columnName转换成中文的。
如果返回给界面层的是实体对象,那么需要用到反射,根据实体类的属性来动态显示数据项;如果标签要显示中文,可以给类的属性加一个Description的Attribute,里面可以放入相应的中文描述,然后反射的时候再获取中文描述。例如:
/// <summary>
/// 用户名
/// </summary>
[Description("用户名")]
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}
如果返回给界面层的是实体对象,那么需要用到反射,根据实体类的属性来动态显示数据项;如果标签要显示中文,可以给类的属性加一个Description的Attribute,里面可以放入相应的中文描述,然后反射的时候再获取中文描述。例如:
/// <summary>
/// 用户名
/// </summary>
[Description("用户名")]
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}
追问
如果说我设定了一个字段里面放的是一种性别的描述,分别是男和女,可以用逗号分隔开
也可以说是某一种属性的描述都可以往后增加,只是用逗号分隔开而已,那怎么对应的生成这些描述的控件,比如说在页面上男、女用单选按钮,爱好用复选框来勾选,往后要是多了一个描述,就会多增加一个复选框,这怎么实现。还有在页面上怎么布局?
追答
那你需要把这些配置信息都保存起来,比如这个字段该用什么控件,是单选框、复选框、下拉列表框,还是文本框?如果是选择性的控件这个控件可能会有哪些待选值?这些你都需要保存下来。要不然你的程序是不可能知道该呈现什么控件的。
还有一种办法就是自定义Attribute,在类的自身属性里标明页面上展现这一类数据的时候,该用什么控件,有哪些可选的值。实现原来跟保存到数据库是一样的,都是需要保存这种配置信息,只不过一个存到数据库,一个存到类自身编译过的文件里。
总之就一句话,程序越灵活,那么你为了这种灵活性而需要保存的基础数据就越多。
展开全部
直接将数据库中的字段名和字段值取出后作相应显示处理:
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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
完全可以使用linq解决啊~~
linq是基于数据表,自动帮你映射生成实体类~~~
linq是基于数据表,自动帮你映射生成实体类~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用循环,后台动态生成前台html。
比如DataTable dt中有你所有的属性,那么就循环dt ,然后在循环里面动态创建html标签,生成之后把生成的标签赋值给前端的div或者其他什么标签就OK了。
比如DataTable dt中有你所有的属性,那么就循环dt ,然后在循环里面动态创建html标签,生成之后把生成的标签赋值给前端的div或者其他什么标签就OK了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询