【问题标题】:how to bind a repeater inside a repeater on the basis of values from the first repeater如何根据来自第一个转发器的值在转发器内绑定转发器
【发布时间】:2015-08-13 13:08:11
【问题描述】:

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

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

我在 SQL 中的表。

学生代码   |学生姓名 |资产详情
1                                                                                                                                         笔记本电脑
1                                  雷                   床
2                                   Raj                    电话
2                                                                                                                                                                                         充电器 …… 我想在我的页面上显示每个唯一学生代码的资产详细信息。

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

1                                                                                             笔记本电脑

2                            Raj                 电话
充电器

我如何只用一次来自 sql 的命中来执行相同的操作?

【问题讨论】:

  • 在同一个存储过程中为父转发器和子转发器选择数据,但在不同的表中。将第一个中继器与其 Table 绑定,例如 Table[0],并在父中继器的 ItemDataBound 事件中通过在 Table[1] 上应用 LINQ 绑定子中继器。
  • 在中继器中取两个中继器一个中继器..

标签: asp.net gridview repeater


【解决方案1】:

您可以执行以下操作:

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

SELECT DISTINCT StudentCode, studentname FROM StudentInfo

SELECT StudentCode, student name, Asset Details

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

为表创建关系(请使用智能感知语法)

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

将 GridView 与 DataSet 绑定

为资产详细信息创建一个模板列,并为该列插入一个转发器或网格视图。

关于 GridView 的 ItemDataBound 事件。

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

【讨论】:

    【解决方案2】:

    不要使用两个repeater控件,而是尝试做一个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
    

    这将为每个学生 ID 返回单行,并在同一行中以 CSV 格式显示 Assestdetails

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 2015-03-14
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 2018-11-21
      相关资源
      最近更新 更多