sql字段等于另一个字段的值 ASP.NET Tips1---合并多个字段值
ASP.NET Tips1---合并多个字段值
一般支持数据绑定的web控件 例如DorpDownList控件 CheckBoxList控件等 都包含五个属性 DataSource DataMember DataTextField DataValueField和DataTextFormatString DataSource用于获取数据源 亦即获取包含数据的集合 其他四个属性用于获取数据源中的一个字段值 然而 通常情况下 你想将这些数据源中的多个字段值绑定在一起赋值给其中的一个属性 这是不能直接实现的 下面我们将介绍两种方法用于实现这一功能
以上限制在于不能将多个字段值绑定在一起 赋值给这四个属性中的其中一个 但是SQL语句却完全没有这种限制 所以 我们的第一个方法是使用SQL语句将源表中的两个或多个字段值绑定在一起 使用AS子句传递给另一个字段 这样就实现了一个字段包含多个字段值 由于现在一个字段就包含了多个字段的值 我们将其赋值给web控件的那四个属性时就不用有更多的考虑了 我们可以参考下面的语句看看这种方法的妙处
strCmd= SELECT employeeid lastName + +firstName AS EmployeeName FROM Employees
这种方法十分简洁 也是最直接的一种方法 不过存在着效率不足的问题 而且有可能会产生重复数据 下面我们介绍另一种方法 我们可以将源表填充到一个数据集DataSet中 然后将数据集的数据放置到一个数据表DataTable中 然后给该表创建一个新列 该列由源表中的两个或多个字段构成 这样我们也实现了多个字段值的绑定 下面的语句可以说明这种方法的实现
dt Columns Add( EmployeeName typeod(String) lastName+ +firstName )
后一种方法的缺点在于创建新列的开销 不过这种方法条理比较清楚 而且不会产生重复数据的可能 建议使用这种方法

为了说明这两种方法 下面的代码将两种方法放在一起实现了
// 在此处放置用户代码以初始化页面
string strConn strCmd
strConn= DATABASE=NorthWind SERVER=localhost UID=sa PWD=
//如果既需要将firstName和LastName绑定 又需要单独使用他们 下面的语句就会产生重复数据
strCmd= SELECT employeeid firstName lastName lastName + +firstName AS EmployeeName FROM Employees
SqlDataAdapter dsda=new SqlDataAdapter(strCmd strConn)
DataSet ds=new DataSet()
dsda Fill(ds EmployeeList )
DataTable dt=ds Tables[ EmployeeList ]
//第一种方法
//DDL 是一个DropDownList控件
DDL DataSource=dt DefaultView
DDL DataTextField= EmployeeName
DDL DataValueField= employeeid
DDL DataBind()
/*第二种方法
dt Columns Add( EmployeeName typeod(String) lastName+ +firstName )
DDL DataTextField= EmployeeName
DDL DataBind()
lishixinzhi/Article/program/net/201311/13497