【问题标题】:Display "no records found" in webgrid c# web pages在 webgrid c# 网页中显示“未找到记录”
【发布时间】:2015-09-04 15:51:40
【问题描述】:

有没有更简单的方法在空的 webgrid 中显示“未找到记录”?以下是我拥有的适用于我的代码。但是,我不想在 else 块中为其他选项卡创建 HTML 表。

@if (Page.Tab == "DisplayGrid")
{
    if (Page.IncompleteCount > 0)
    {
        var grid = new WebGrid(Page.DisplayData, rowsPerPage: 10, defaultSort: "UserName", canSort: true);
        @grid.Pager(mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20)
        @grid.GetHtml(columns: grid.Columns(
            grid.Column("UserName", "User"),
            grid.Column("Column1", "Column 1", format: @<div><a href="@Href("~/thispage/", item.UserId)" target="_blank">@item.UserId</a></div>),
            grid.Column("Column2", "Column 2", format: @<div class="w400">@HH.TruncateString(@item.Column2, 125)</div>),
            grid.Column("Column3", "Column 3", format: @<div class="w200"> @HH.FmtDate(@item.Column3)</div>)),
                tableStyle: "simple", headerStyle: "hdr", rowStyle: "odd", alternatingRowStyle: "even", mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20)
    }
   else
    { 
        <table>
            <tr bgcolor ="#336699">
                <td width="150">
                    <font color="white"><b><u>User</u></b></font>
                </td>
                <td width="100">
                    <font color="white"><b>Column 1</b></font>
                </td>
                <td width="300">
                    <font color="white"><b>Column 2</b></font>
                </td>
                <td width="100">
                    <font color="white"><b>Column 3</b></font>
                </td>
            </tr>
            <tr>
                <td colspan="4" align="center">
                    <br />
                    <b>No User Records Found</b>

             <br />
                </td>
            </tr>
        </table>
    }
}

其他选项卡的 Webgrid 具有不同的列和列数。确保我有正确的 colspan # 以便正确显示“未找到记录”的消息(居中对齐)是很乏味的。有更简单的方法吗?谢谢。

【问题讨论】:

  • 如果您可以添加页脚,它将完全符合您的要求。在@grid.Table() 中,它有一个论据,但不是@grid.GetHtml()。然后,您可以使用 (Page.IncompleteCount &gt; 0 ? Page.IncompleteCount : "No") + " User Record" + (Page.IncompleteCount == 1 ? : "s" : "") + " Found" 的值始终列出在底部找到的记录数(它看起来像另一行)。
  • @grid.Table() 方法是我正在寻找的。现在,我必须构建分页,因为它没有 GetHtml() 方法提供的功能(分页功能)。感谢冥王星为我指明了正确的方向。
  • 太棒了,我以前从未使用过 WebGrid,所以您应该回答自己的问题并将其标记为解决方案。

标签: c# razor webgrid asp.net-webpages


【解决方案1】:

当你没有记录时,你能像这样只显示一个 div 吗?

@if (Page.Tab == "DisplayGrid")
{
    if (Page.IncompleteCount > 0)
    {
        var grid = new WebGrid(Page.DisplayData, rowsPerPage: 10, defaultSort: "UserName", canSort: true);
        @grid.Pager(mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20)
        @grid.GetHtml(columns: grid.Columns(
            grid.Column("UserName", "User"),
            grid.Column("Column1", "Column 1", format: @<div><a href="@Href("~/thispage/", item.UserId)" target="_blank">@item.UserId</a></div>),
            grid.Column("Column2", "Column 2", format: @<div class="w400">@HH.TruncateString(@item.Column2, 125)</div>),
            grid.Column("Column3", "Column 3", format: @<div class="w200"> @HH.FmtDate(@item.Column3)</div>)),
                tableStyle: "simple", headerStyle: "hdr", rowStyle: "odd", alternatingRowStyle: "even", mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20)
    }
   else
    { 
        <div><b>No User Records Found</b></div>
    }
}

感谢您的反馈。标题是否被重用,所以它们每次都一样?如果是这样,您可以将您的标记分配给一个变量并使用 @Html.Raw() 帮助器每次都呈现它。

@{
    string noRecordsTable = "<table><tr> ...";
}

然后在你的 else 条件下:

@Html.Raw(noRecordsTable);

这是另一种选择。这样您就不会在 Razor 中一遍又一遍地写表格。

【讨论】:

  • 我希望能够在这些列标题下方显示列标题(用户名、Column1、...)和“未找到用户记录”。
【解决方案2】:

这就是我的想法。感谢 Pluto 提出 grid.Table 方法:

{
        var grid = new WebGrid(Page.DisplayData, rowsPerPage: 10, defaultSort: "UserName", canSort: true);
        var tfooter = (Page.IncompleteCount > 0 ? Page.IncompleteCount : "No") + " User Record" + (Page.IncompleteCount == 1 ? Page.IncompleteCount : "s") + " Found";

    @grid.Pager(mode: WebGridPagerModes.All, previousText: "previous", nextText: "next", numericLinksCount: 20)
    @grid.GetHtml(columns: grid.Columns(
        grid.Column("UserName", "User"),
        grid.Column("Column1", "Column 1", format: @<div><a href="@Href("~/thispage/", item.UserId)" target="_blank">@item.UserId</a></div>),
        grid.Column("Column2", "Column 2", format: @<div class="w400">@HH.TruncateString(@item.Column2, 125)</div>),
        grid.Column("Column3", "Column 3", format: @<div class="w200"> @HH.FmtDate(@item.Column3)</div>)),
            tableStyle: "simple", headerStyle: "hdr", rowStyle: "odd", alternatingRowStyle: "even", footer: @<div><b>@tfooter</b></div>)
}

我无法在 grid.Table 方法中使用 mode、previousText 和 nextText 属性。我找到了有关如何向此方法添加分页的参考,我正在努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2018-03-10
    • 1970-01-01
    • 2013-07-27
    相关资源
    最近更新 更多