如何根据第一个转发器的值绑定转发器内的转发器

时间:2012-10-17 04:36:17

标签: asp.net gridview repeater

学生代码| student.Name |地区名称|位置名称|资产详情|

我必须根据每个学生显示资产详情。一个学生可以有多个资产详细信息,我如何在转发器或网格视图中使用它。

我在SQL中拥有的表。

学生代码|学生姓名|资产详情
1雷笔记本电脑
1雷床
2 Raj Phone
2 Raj充电器\

  .... 我想在我的页面上显示每个唯一学生代码的资产详细信息。

学生代码|学生姓名|资产详情

1雷笔记本电脑
 床
2 Raj Phone
                                   充电器

如何只使用sql中的一个匹配执行相同操作。?

2 个答案:

答案 0 :(得分:0)

尝试进行sql查询以获取此格式的数据,而不是使用两个转发器控件 使用这样的查询

select studentID, 
       stuff((select ',' + AssetDetails
                  from Tbl_Student t2 
                  where t2.studentID= t1.studentID
                  order by studentID
                  for xml path('')),1,1,'') as AssetDetailsString
    from Tbl_Student t1
    group by studentID

这将为同一行中具有CSV格式的Assestdetails的每个studentID返回单行

答案 1 :(得分:0)

您可以执行以下操作:

使用存储过程为以下查询返回两个结果集

SELECT DISTINCT StudentCode, studentname FROM StudentInfo

SELECT StudentCode, student name, Asset Details

使用2个表为结果创建一个DataSet。您可以将第一个表命名为“Student”,将第二个表命名为“StudentInfo”

为表创建关系(请使用intellisense语法)

DataSet.Relationships.Add("RelationshipName",Table1.StudentCode,Table2.StudentCode)

使用DataSet绑定GridView

为“资产详细信息”创建“模板”列,并为该列插入转发器或Gridview。

在GridView的ItemDataBound事件上。

DataRowView drv = (DataRowView)e.ItemData;
Repeater.DataSource = dv.CreateChildView();