|  | 网站首页 | .Net研究 | 
您现在的位置: 程序员之路 >> .Net研究 >> 语言技术区 >> 新手技术 >> 文章正文
赞助商链接
频 道 导 航
.Net研究频道栏目导航
相 关 文 章
在TemplateField中显示与数据库中相异的值           
在TemplateField中显示与数据库中相异的值
作者:xiaomi77… 文章来源:不详 更新时间:2007-5-10 11:05:14

    在做ASP.NET绑定数据到模板列的时候,常常会遇到这么一种情况:数据库中的值与需要显示的值之间形成一种映射,但不直接显示。例如,有一个性别字段,在数据库中常常是bit型的: 
create table A
(
    id    int     primary key identity(1,1),
    sex   bit
)
    然而,如果直接绑定到数据显示控件,会显示为一个CheckBox,很不直观。
    也有可能是:性别被定义为一个char类型,然后,用M代替男性,F代替女性。
    针对这种情况,有一种很简单的处理方法,就是建立一个处理函数,在绑定的时候,调用此函数。假设针对上面的A表,可以写这么一个函数,这个函数必须是proctected或者public的型,返回一个字符串(用于最终显示):

protected string DisplaySexCn(ARow a) //假设ARow是一个强类型的DataRow
{
    
if(a.sex) return ""//当sex为true时,返回"男",完成true到"男"的映射
    return ""//返回false到"女"的映射
}

    然后,对相应的绑定声明进行修改:
<%#DisplaySexCn((ARow)((DataRowView)Container.DataItem).Row)%>

    至此,所有映射就完成了。如果数据库里是M/F,那么,只需要修改DisplaySexCn函数就可以了。
   
    以上是一种通用的方法。针对布尔类型的数据绑定,有一个小技巧,利用C#中的三元运算“?:”,可以很大程度上简化这个过程,可以直接修改绑定声明而不需要多写一个函数:
<%#(bool)Eval("sex")?"":""%>


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • .Net研究栏目导航
    网站频道导航