ASP.NET Tips1---合并多个字段值

          一般支持数据绑定的web控件,例如DorpDownList控件、CheckBoxList控件等,都包含五个属性:DataSource、DataMember,DataTextField、DataValueField和DataTextFormatString。DataSource用于获取数据源,亦即获取包含数据的集合;其他四个属性用于获取数据源中的一个字段值。然而,通常情况下,你想将这些数据源中的多个字段值绑定在一起赋值给其中的一个属性,这是不能直接实现的。下面我们将介绍两种方法用于实现这一功能。
         以上限制在于不能将多个字段值绑定在一起,赋值给这四个属性中的其中一个;但是SQL语句却完全没有这种限制。所以,我们的第一个方法是使用SQL语句将源表中的两个或多个字段值绑定在一起,使用AS子句传递给另一个字段,这样就实现了一个字段包含多个字段值。由于现在一个字段就包含了多个字段的值,我们将其赋值给web控件的那四个属性时就不用有更多的考虑了。我们可以参考下面的语句看看这种方法的妙处:

None.gif strCmd = " SELECT employeeid,lastName +','+firstName AS 'EmployeeName' FROM Employees " ;

         这种方法十分简洁,也是最直接的一种方法,不过存在着效率不足的问题,而且有可能会产生重复数据。下面我们介绍另一种方法,我们可以将源表填充到一个数据集DataSet中,然后将数据集的数据放置到一个数据表DataTable中,然后给该表创建一个新列,该列由源表中的两个或多个字段构成,这样我们也实现了多个字段值的绑定。下面的语句可以说明这种方法的实现:

None.gif dt.Columns.Add(“EmployeeName”,typeod(String),”lastName + ’,’ + firstName”);

         后一种方法的缺点在于创建新列的开销。不过这种方法条理比较清楚,而且不会产生重复数据的可能,建议使用这种方法。
为了说明这两种方法,下面的代码将两种方法放在一起实现了:

 1 None.gif //  在此处放置用户代码以初始化页面
 2 None.gif string  strConn,strCmd;
 3 None.gifstrConn = " DATABASE=NorthWind;SERVER=localhost;UID=sa;PWD=password; " ;
 4 None.gif // 如果既需要将firstName和LastName绑定,又需要单独使用他们,下面的语句就会产生重复数据。
 5 None.gif strCmd = " SELECT employeeid,firstName,lastName,lastName +','+firstName AS 'EmployeeName' FROM Employees " ;
 6 None.gifSqlDataAdapter dsda = new  SqlDataAdapter(strCmd,strConn);
 7 None.gifDataSet ds = new  DataSet();
 8 None.gifdsda.Fill(ds, " EmployeeList " );
 9 None.gifDataTable dt = ds.Tables[ " EmployeeList " ];
10 None.gif   
11 None.gif // 第一种方法
12 None.gif // DDL1是一个DropDownList控件
13 None.gif DDL1.DataSource = dt.DefaultView;
14 None.gifDDL1.DataTextField = " EmployeeName " ;
15 None.gifDDL1.DataValueField = " employeeid " ;
16 None.gifDDL1.DataBind();
17 ExpandedBlockStart.gifContractedBlock.gif /**/ /*第二种方法
18InBlock.gifdt.Columns.Add("EmployeeName",typeod(String),"lastName+','+firstName");
19InBlock.gifDDL1.DataTextField="EmployeeName";
20InBlock.gifDDL1.DataBind();
21InBlock.gif * /  
22InBlock.gif

转载于:https://www.cnblogs.com/lotusswan/archive/2005/08/25/222373.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值