如何使用 ListView 呈现具有多个行跨列的数据表

2024-03-26

我需要在 html 表中显示数据库中的数据。我目前正在使用 ListView 控件。

我希望最终的 HTML 表呈现如下所示的内容,其中某些行有一个rowspan属性大于一。原因是有些字段有几行信息,但对应同一个逻辑条目。

例如:

|---------|---------|----------|----------|
| data    | data    |data      | data     |
|         |         |----------|          |
|         |         |data      |          |
|         |         |----------|          |
|         |         |data      |          |
|---------|---------|----------|----------|
| data    | data    |data      | data     |
|         |         |----------|          |
|         |         |data      |          |
|         |         |----------|          |
|         |         |data      |          |
|---------|---------|----------|----------|
| data    | data    |data      | data     |
|         |         |----------|          |
|         |         |data      |          |
|         |         |----------|          |
|         |         |data      |          |
|         |         |----------|          |
|         |         |data      |          |
|         |         |----------|          |
|         |         |data      |          |
|---------|---------|----------|----------|

在 ASP.net 中实现此目的最简单的方法是什么?


不太优雅的解决方案ListView。主要思想是使用Repeater在 - 的里面ListView并将除第一条记录之外的所有子数据(我的意思是示例中第三列的数据)绑定到它。

<asp:ListView runat="server" ID="lstData">
    <LayoutTemplate>
        <table>
            <asp:PlaceHolder runat="server" ID="itemPlaceholder" />
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td <%# GetRowspan((int)Eval("Data.Length")) %>>
                <%# Eval("FirstName") %>
            </td>
            <td <%# GetRowspan((int)Eval("Data.Length")) %>>
                <%# Eval("LastName") %>
            </td>
            <td>
                <%# GetFirst((IEnumerable<string>)Eval("Data")) %>
            </td>
            <td <%# GetRowspan((int)Eval("Data.Length")) %>>
                <%# Eval("Country") %>
            </td>
        </tr>
        <asp:Repeater runat="server" 
            DataSource=<%# GetRest((IEnumerable<string>)Eval("Data")) %>>
            <ItemTemplate>
                <tr>
                    <td>
                        <%# Container.DataItem %>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:ListView>

和后面的代码:

public override void DataBind()
{
    var item1 = new { FirstName = "John", LastName = "Doe", 
        Data = new[] { "first", "second", "third" }, Country = "US" };
    var item2 = new { FirstName = "Jane", LastName = "Doe", 
        Data = new string[] { }, Country = "CA" };
    var item3 = new { FirstName = "Joe", LastName = "Public", 
        Data = new[] { "first", "second", "third", "fourth" }, Country = "US" };

    lstData.DataSource = new[] { item1, item2, item3 };
    lstData.DataBind();
}

protected string GetRowspan(int length)
{
    if (length == 0)
        return string.Empty;
    else
        return string.Format("rowspan='{0}'", length);
}

protected string GetFirst(IEnumerable<string> data)
{
    return data.FirstOrDefault();
}

protected IEnumerable<string> GetRest(IEnumerable<string> data)
{
    if (data.Any())
        return data.Skip(1);
    else
        return Enumerable.Empty<string>();
}

这会以您想要的格式输出数据。

但如果使用ListView没有必要你可以看看GridView。有更优雅的方法可以使用它来做到这一点 -使用 RowCreated 事件的 ASP.NET GridView RowSpan - 如何使用 GridView 添加表动态 RowSpan http://www.kodyaz.com/articles/asp-net-gridview-rowspan-using-rowCreated-event.aspx文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ListView 呈现具有多个行跨列的数据表 的相关文章

随机推荐

  • TypeScript 类装饰器获取类名

    我试图在运行时在类装饰器中获取类的名称 缩小 当我这样做时 const metadata Reflect getMetadata design type target constructor 我变得不确定 我需要知道类名而不是缩小值 我认为
  • Objective C - 获取今天(明天)的第二天

    如何检查某个日期是否本质上是 明天 我不想在像今天这样的日期上添加时间或任何内容 因为如果今天已经22 59 添加太多会延续到后天 添加太少则时间到了12 00会错过明天 我怎样才能检查两个NSDate并确保其中一个相当于另一个的明天 Us
  • Sklearn ROC AUC 分数:ValueError:y 应该是一个一维数组,而是一个形状为 (15, 2) 的数组

    我有这个带有目标的数据集LULUS 这是一个不平衡数据集 我正在尝试打印roc auc如果我可以对数据的每个折叠进行评分 但在每个折叠中 不知怎的 它总是会引发错误说ValueError y should be a 1d array got
  • 断点指出“objc_autoreleaseNoPool”

    因此 我正在调试一个应用程序 为其应用程序发布做准备 并且我为 所有异常 启用了通用断点 从那时起 每次我运行该应用程序时 控制台都会打印 捕获点 2 抛出 挂起的断点 1 objc exception throw 已解决 objc 117
  • Laravel 具有不同的会话生命周期

    问 如何在 Laravel 5 中创建不同生命周期的会话 这个问题不是重复的这个问题 https stackoverflow com q 40258339 1474817 我不想将其用于任何类型的登录或注册 我只想将其存储 5 分钟 因为获
  • 如何像编译器一样获取每个虚函数索引?

    是否有一些插件或工具可以读取 h 文件 或简单地修改 Intellisense 本身 并吐出每个函数及其虚拟函数表索引 有一种模式我还没有弄清楚与多态性有关 当你开始有 5 个或更多的类相互派生时 它就会变得困难 5 倍 但无论如何 MSV
  • IntelliJ IDEA:如何修复损坏的字体显示?

    无法阅读该语言 怎么设置成英文呢 The issue is not with the language but with some broken font mapping on your system The workaround is t
  • Node.js + Azure SQL 数据库

    我正在挣扎微软的node js sql客户端 https github com WindowsAzure node sqlserver 我已经安装了它 使用 github 页面上的指南没有任何错误 并且一切在本地运行完美 但是当我使用 gi
  • 如何根据 HTML 从统计页面中提取玩家信息?

    我正在尝试使用 selenium 抓取网站的一些信息 下面是该网站的链接http www ultimatetennisstatistics com playerProfile playerId 4742 http www ultimatet
  • C语言中的宏(#define)

    我正在阅读hoard内存分配器的源代码 在gnuwrapper cpp文件中 有以下代码 define CUSTOM MALLOC x CUSTOM PREFIX malloc x 是什么意思CUSTOM PREFIX malloc x i
  • MPAndroidChart 条形图 - 如何对组之间具有随机 x 轴间隔的条形进行分组?

    我想制作一个条形图 其中每个数据点将 3 个不同的数据集分组在一起 如下所示 但是 我无法使用库提供的功能将条形图分组在一起groupBars方法 因为无论我为条目设置什么 x 值 它都会根据我在其参数中指定的间隔对条形进行分组 例如 如果
  • 镜头:新型变焦

    我有兴趣获得zooming我的 monad 变压器堆栈的功能定义如下 newtype Awesome a Awesome StateT AwesomeState ExceptT B ByteString IO a deriving Func
  • Python 将列表转换为集合,大 O

    感谢您的帮助 words Big list of words words set set words 当 n len words 时 我很难确定 set words 的复杂性是多少 是 O n 因为它在列表的所有项目上移动 还是 O l n
  • 如何让odeint成功?

    我是 python 初学者 目前使用 scipy 的odeint计算耦合的 ODE 系统 但是 当我运行时 python shell 总是告诉我 gt gt gt Excess work done on this call perhaps
  • 在 PHP 中将十六进制转换为图像?

    我正在开发通过以下方式与服务器通信的移动应用程序PHP Webservice 这是我第一次使用 PHP 我设法将数据上传到数据库 现在我需要发送图像以将其存储在 ftp 服务器中 为此我转换了image gt hex并从我的应用程序发送 服
  • 如何在安装时强制 Chrome 扩展上的键盘快捷键

    我正在尝试实现一个使用键盘快捷键触发事件的 Chrome 扩展 快捷方式在这里声明 commands sample suggested key default Ctrl I windows Ctrl I description Refres
  • emacs autoloaded 中保证自动加载功能的机制是什么

    我知道所有标有 Autoload 行的函数都将是自动加载函数 但问题是执行此 自动加载函数 的底层机制是什么 还有为什么当从 elpa 安装软件包时 会出现一个名为 XXX autoload elc 的编译文件 当您安装 Elpa 软件包时
  • Php变量存储字符串时的大小限制是多少?

    情况是这样的 我有一个 2Gb 的转储文件 名为myDB sql 它是一个转储文件 可删除现有数据库并创建一个带有视图和触发器的新数据库 所以我有字符串myDB OLD分布在许多行代码中 我想将这些字符串的出现次数更改为myDB NEW 我
  • Google reCAPTCHA、405 错误和 CORS 问题

    我正在使用 AngularJS 并尝试使用 Google 的 reCAPTCHA 我正在使用 显式呈现 reCAPTCHA 小部件 在我的网页上显示 reCAPTCHA 的方法 HTML 代码
  • 如何使用 ListView 呈现具有多个行跨列的数据表

    我需要在 html 表中显示数据库中的数据 我目前正在使用 ListView 控件 我希望最终的 HTML 表呈现如下所示的内容 其中某些行有一个rowspan属性大于一 原因是有些字段有几行信息 但对应同一个逻辑条目 例如 data da