如何在GridView的单个列中显示多个值?例如,当我在TextBox中搜索“ Ivan”时,输出将返回Ivan的多行,如下所示:


  命名任务
  伊万·塔斯(Ivan Task1)
  伊万Task2
  伊万·塔斯(Ivan Task3)


我想要这样的东西


  命名任务
  伊凡(Ivan)任务1,任务2,任务3


我的桌子是这样的


  员工(编号,姓名)
  任务(ID,名称)
  EmployeeTask(employee.id,task.id)


这是我的SQL代码

SELECT  e.name,  t.name
FROM EmployeeTask et
INNER JOIN employee e ON e.id = et.employee_id
INNER JOIN task t ON t.id = et.task_id
WHERE e.name = @Name


这是我的GridView标记

<Columns>
    <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name"/>
    <asp:BoundField DataField="task" HeaderText="Task" SortExpression="task"/>
</Columns>

最佳答案

在纯SQL中,这是一种获得所需结果的方法,然后可以将其输入到GridView中:

SELECT     e.name, REPLACE(REPLACE(REPLACE
                          ((SELECT     t.name
                              FROM         EmployeeTask AS et INNER JOIN
                                                    task AS t ON t.id = et.task_id
                              WHERE     (et.employee_id = e.id)
                              FOR XML RAW(''), ELEMENTS)
                   , '</name><name>', ', '), '<name>', ''), '</name>', '') AS EmployeeTasks
FROM         employee AS e
WHERE     (e.name = @Name)


从本质上讲,它是一个子查询,将任务分解为XML输出,然后用逗号替换标记。

关于c# - ASP.NET C#GridView的单列中的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11127034/

10-10 13:47