【问题标题】:dynamically populating column headers in a gridview在gridview中动态填充列标题
【发布时间】:2012-03-06 15:31:53
【问题描述】:

我有一个带有 gridview 的 vb.net 网站,该网站目前在每一行中垂直显示试题,如下所示:

Name  question  answer
-----------------------
Joe   question1 answer1
Joe   question2 answer2
Joe   question3 answer3
Jill  question1 answer1
Jill  question2 answer2
Jill  question3 answer3

但我想改一下,让每个问题都是一个标题,像这样:

Name question1 question2 question3
----------------------------------
Joe  answer1   answer2   answer3
Jill answer1   answer2   answer3

这使它更具可读性,因为每个用户只列出一次。

我早上大部分时间都在谷歌上搜索解决方案,但真的找不到任何有效的方法。

我想坚持使用 gridview 而不是重写我的所有代码。

有人有什么建议吗?

我实际上是通过其他一些程序员类将我的数据绑定到网格视图。我正在使用这样的 LINQ:

Return (From entry In report.FetchAllEntries()
                Select questionID = entry.Question.QuestionID,
                userID = entry.Session.User.ID,
                firstName = entry.Session.User.FirstName,
                lastName = entry.Session.User.LastName,
                QuestionText = entry.Question.Stem,
                UserResponse = entry.Response.Text,
                FreeResponse = entry.ResponseText,
                SessionDate = entry.Timestamp
                 Where SessionDate.HasValue AndAlso
                               SessionDate.Value >= dateField1 AndAlso
                               SessionDate.Value <= dateField2
                Order By lastName, SessionDate, questionID

谢谢

【问题讨论】:

  • 看起来你可以通过修改你的 SQL 查询来做到这一点(比如做一个PIVOT 或其他东西)。您能否显示为您的GridView 生成数据的查询?
  • 我通过 LINQ 语句进行绑定。我不确定我是否可以修改 LINQ 语句以像那样切换它...我编辑了我的原始帖子以包含 LINQ。 --谢谢
  • 您也许可以使用另一个 linq 查询来透视数据:stackoverflow.com/questions/167304/…

标签: c# asp.net .net vb.net


【解决方案1】:

您需要使用 group by 来汇总结果。这应该有效:

Dim grouped =
    From usersAnswers In
        From result In results
        Group result By result.userID Into Group
        Let answers = Group.OrderBy(Function(x) x.QuestionText).ToList()
        Select
            answers.First().firstName,
            Question1 = answers(0).UserResponse,
            Question2 = answers(1).UserResponse,
            Question3 = answers(2).UserResponse

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多