如何向 Grid.Mvc 添加导出功能,以便将当前搜索结果导出到 Excel?

2024-01-27

关于这个话题有几个问题https://stackoverflow.com/questions/23498689/handle-a-pre-filtered-list-with-grid-mvc https://stackoverflow.com/questions/23498689/handle-a-pre-filtered-list-with-grid-mvc and grid.mvc 在控制器中使用过滤结果 https://stackoverflow.com/questions/23806174/grid-mvc-use-filtered-result-in-controller但没有答案。

我正在使用 Grid.MVC 和 MVC 4 的基本示例

@using GridMvc.Html

@Html.Grid(Model,"_MyCustomGrid").Columns(columns =>
          {
                columns.Add(foo => foo.Title).Titled("Custom column title").SetWidth(110);
                columns.Add(foo => foo.Description).Sortable(true);
          }).WithPaging(20)

这会创建一个看起来像这样的网格 -

一旦用户过滤了网格中的数据,我希望他们能够将其导出到 Excel。我已阅读源代码,但看不到可以插入的事件。


我找到的解决方案是创建一个控制器和视图,返回一个具有 XLS 内容类型的表。不幸的是,当您在 Excel 中打开结果时,您会收到一条警告消息,因此它并不完美,但它可以工作。

e.g.

// Controllers/TaskController.cs
public virtual ActionResult Export () {
    var tasks = repository.GetAllTasks();

    Response.AddHeader("Content-Disposition", "attachment; filename=Tasks.xls");
    Response.ContentType = "application/ms-excel";

    return PartialView("Export", tasks);
}

// /Views/Task/Export.cshtml
@model IEnumerable<OpuzEleven.Models.Task>
@using GridMvc.Html;


@(Html.Grid(Model, "_GridExcel")
    .Named("TaskGrid")
    .AutoGenerateColumns()
    .Columns(columns => columns.Add(c => c.UserProfile.FullName).Titled("Created by"))
    .Sortable(true)
    .Filterable(true))

// /Shared/_GridExcel.cshtml
@using GridMvc.Columns
@model GridMvc.IGrid

@if (Model == null) { return; }
@if (Model.RenderOptions.RenderRowsOnly) {
  @RenderGridBody();
} else {
  <div class="grid-mvc" data-lang="@Model.Language" data-gridname="@Model.RenderOptions.GridName" data-selectable="@Model.RenderOptions.Selectable.ToString().ToLower()" data-multiplefilters="@Model.RenderOptions.AllowMultipleFilters.ToString().ToLower()">
    <div class="grid-wrap">
      <table class="table table-striped grid-table">
        @* Draw grid header *@
        <thead>
          @RenderGridHeader()
        </thead>
        <tbody>
          @RenderGridBody()
        </tbody>
      </table>
    </div>
  </div>
}

@helper RenderGridBody () {
  if (!Model.ItemsToDisplay.Any()) {
    <tr class="grid-empty-text">
      <td colspan="@Model.Columns.Count()">
        @Model.EmptyGridText
      </td>
    </tr>
  } else {
    foreach (object item in Model.ItemsToDisplay) {
      <tr class="grid-row @Model.GetRowCssClasses(item)">
        @foreach (GridMvc.Columns.IGridColumn column in Model.Columns) {
          @column.CellRenderer.Render(column, column.GetCell(item))
        }
      </tr>
    }
  }
}

@helper RenderGridHeader () {
  <tr>
    @foreach (GridMvc.Columns.IGridColumn column in Model.Columns) {
      <th>@column.Title</th>
    }
  </tr>
}

注意:以便链接传递用于过滤网格的参数,请使用此MVC ActionLink 添加当前 url 中的所有(可选)参数 https://stackoverflow.com/questions/3779932/mvc-actionlink-add-all-optional-parameters-from-current-url

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

如何向 Grid.Mvc 添加导出功能,以便将当前搜索结果导出到 Excel? 的相关文章

  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • VBA将二进制图像转换为网页的base64编码字符串

    我正在尝试读取 JPG 文件并将该文件转换为 base64 编码的字符串 该字符串可用作网页上的嵌入 jpeg 我在网上发现了两个在 VBA 中进行 Base64 编码 解码的函数 它们似乎被广泛接受 编码 解码过程产生了我的原始二进制字符
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • Jquery 验证不能正确验证数字?

    我在使用 jquery 非侵入式验证验证数字时遇到问题 我使用的版本是 ASP NET MVC 3 jQuery 1 9 1 jQuery 用户界面 1 10 1 JQuery 验证 1 11 0 我试图验证的输入是
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 从 Excel 应用程序对象中查找位数(32 位/64 位)?

    是否可以从 Microsoft Office Interop Excel ApplicationClass 确定 Excel 是以 32 位还是 64 位运行 Edit该解决方案应该适用于 Excel 2010 和 Excel 2007 此
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中

随机推荐

  • 如何使用 jq 获取两个 JSON 数组的交集

    给定数组 X 和 Y 最好都作为输入 但否则 一个作为输入 另一个硬编码 如何使用 jq 输出包含两者共有的所有元素的数组 例如f 的值是多少 使得 echo 1 2 3 4 jq f 2 4 6 8 10 会输出 2 4 我尝试过以下方法
  • 你能在 jQuery 中扩展 val() 函数吗?

    有没有办法扩展 jQuery 中的 val 函数 基本上 我想要做的是如果有内容被动态输入到输入中 则设置一个类变量 通常会是这样的 var thisVal Hello World myInput val thisVal addClass
  • Javascript parseFloat 和 null

    我对 javascript 非常陌生 因为我目前正在 jQuery Mobile 中制作跨平台 Web 应用程序 我已经使用了 XML 解析到 HighCharts 图表的示例 但是当我在系列数据中遇到 null 时 它无法绘制任何线条并使
  • 颜色逐渐变化

    屏幕左上角的标志如何随着鼠标滑过而逐渐改变颜色 我认为它是用 jquery 完成的 如果您不知道代码 您能给我指点可以的教程吗 谢谢 http www shopdev co uk blog http www shopdev co uk bl
  • 即使进行所有优化,Android 模拟器也会出现延迟

    HAXM 启用版本 7 1 0 我验证了它在模拟器运行时正常工作 模拟器使用 Nvidia GPU 但在任何给定时间它仅使用最多 7 的 GPU 我有 27 3 1 的模拟器版本 最新 尝试过 x86 图像和 x86 x64 图像 我尝试过
  • 多个按钮上的 javascript 函数

    我有三个按钮 我希望它们在按下时改变颜色 并在再次按下时恢复为无颜色 我在 stackoverflow 上找到了这段代码 它几乎可以让我做到这一点 但是它只适用于一个按钮 其他两个不受影响 另外 当我按下另外两个按钮中的一个时 第一个按钮会
  • 如何在 mongodb 中更新多个数组元素

    我有一个 Mongo 文档 其中包含一个元素数组 我想重置 handled数组中所有对象的属性 其中 profile XX 该文件的形式如下 id ObjectId 4d2d8deff4e6c1d71fc29a07 user id 7146
  • 发帖后查看未更新

    我有一个控制器方法 CreateOrUpdate 该方法应该将汽车保存到数据库 然后正常返回 public ActionResult CreateOrUpdate int ID 0 Car car new Car ID HttpPost p
  • 如何测试 JSONObject 是否为空或不存在

    我有一套JSONObject我从服务器接收并操作的值 大多数时候我得到一个JSONObject带有一个值 比如说统计数据 有时 它返回一个Error带有代码和错误描述的对象 如何构建我的代码 使其在返回错误时不会中断 我以为我可以做到这一点
  • 非规范化是为了理智还是为了性能?

    我开始了一个新项目 他们有一个非常标准化的数据库 所有可以查找的内容都存储为查找表的外键 这是规范化的并且很好 但我最终为最简单的查询执行了 5 个表连接 from va in VehicleActions join vat in Vehi
  • 未找到 Laravel Passport 安装类

    我正在尝试配置我的 Laravel 应用程序以使用 Passport 但在加载 AppServiceProvider php 中的类时遇到了困难 这是我所做的
  • 为什么我的 MFC 应用程序在与两个滚动条交互后挂起?

    我正在开发一个 MFC 应用程序 在 Win10 下运行 其中包含一个图形 CAD 样式编辑器窗口 编辑器窗口包含用户可以重新定位和配置的图标 在包含许多元素的布局中 我们发现编辑器窗口可能会挂起长达 30 秒 这个问题是not当我们的大多
  • 使用 AngularJS 排除 url 中的路径

    我的角度应用程序有多个用户可以访问的页面 我想隐藏所有其他网址并仅向用户显示基本网址 因此 假设我的基本网址是 www example com 并且我还有其他页面 例如 关于 联系我们 等 目前 当用户单击 关于 时 网址将更改为 www
  • 本地通知

    本地通知可以在模拟器上运行吗 如果我关闭 而不是最小化 程序 本地通知会运行吗 是的 也是的 看 http iphonesdkdev blogspot com 2010 04 local push notification sample c
  • DataGrid 列标题与数据不对齐

    我有一个 DataGrid 就 DataGrid 而言它非常简单 由于某种原因 标题与其余数据不对齐 如下面的屏幕截图所示 我已经在互联网上搜索过 但似乎找不到解决方案 这是我的数据网格代码 Grid gt
  • 如何在不编译的情况下安装wkhtmltopdf补丁qt?

    我正在使用 google 云实例作为主机 Odoo somo 报告打印为 pdf 正常 但其他使用自定义纸张格式的会出现以下错误 开关 header spacing 不支持使用未打补丁的 qt 将被忽略 开关 header html 不支持
  • 在Python 3.0中动态向类添加方法

    我正在尝试用 Python 编写一个数据库抽象层 它允许您使用链式函数调用构建 SQL 语句 例如 results db search book author J K Rowling price lt 40 00 title Harry e
  • 使用 C 预处理器的嵌套宏迭代

    使用 C 预处理器 您可以拥有某种高阶宏 像这样的事情 define ABC f f a f b f c define XY f f x f y define CODE x foo x ABC CODE undef CODE define
  • BPF:程序上下文的翻译

    我正在研究不同类型的BPF程序 并注意到对于不同的程序类型 上下文的传递方式不同 Example 对于节目类型BPF PROG TYPE SOCK OPS 类型的对象struct bpf sock ops kern https elixir
  • 如何向 Grid.Mvc 添加导出功能,以便将当前搜索结果导出到 Excel?

    关于这个话题有几个问题https stackoverflow com questions 23498689 handle a pre filtered list with grid mvc https stackoverflow com q