【问题标题】:JQuery GridView controljQuery GridView 控件
【发布时间】:2010-10-18 10:56:58
【问题描述】:

这样的事情存在吗?

我正在寻找的是一个将成为客户端的控件,具有 GridView 的编辑、取消行功能。

我希望用它来收集用户的数据,然后在用户输入数据后保存在服务器上。

已编辑:

感谢所有建议。在我深入研究并花时间学习这些框架之前,我想问你们所有人的一件事。

你们所有人似乎都在使用 ASP.net MVC,并提到这些工具包很好用。然而,我正在使用 ASP.net 网络表单。这些框架能很好地与旧的 ASP.net 配合使用吗?

【问题讨论】:

    标签: c# asp.net jquery gridview


    【解决方案1】:

    客户端框架

    除了jqGrid之外,还有其他几个我最近一直在玩的javascript框架Grids:

    1. Flexigrid:基于 jQuery,否 尚未编辑功能,但已计划中。

    2. Ext's GridPanel:Ext js 是 另一个 javascript 框架 与 jQuery 的接口。

    3. YUI's DataTable: 雅虎用户 界面(YUI)是另一个 带有可编辑网格的框架 控制。

    这些都是客户端组件:它们在用户的浏览器中运行,与您的服务器代码断开连接。就像 Tracker1 和其他几个人所写的那样,您必须自己编写 Ajax 方法来将客户端网格连接到服务器,或者您可以尝试利用现有的包装器,例如:

    服务器端选项

    1. Coolite's Ext wrappers for .NET

    2. 正在进行中的 YUI .NET 包装库之一(YuiDotNet 或 Yui.NET)。我认为其中任何一个都没有实现 DataTable 的包装器,但它们可能会向您展示这样做的方法。

    连接客户端和服务器

    如果您没有使用过很多 Ajax 或使用过这些 javascript 框架,请为学习曲线做好准备:当您开始使用它们时,您需要时刻牢记正在发生的事情在服务器上以及客户端上发生了什么(以及何时!)。

    如果您使用我上面列出的直接 javascript 库之一,而不是 .NET 包装器,您必须编写一个服务器端方法来处理数据提交并使用您选择的技术将其公开给客户端(MVC的JsonResult控制器动作,建立WebMethods/ScriptMethods等)。

    相关堆栈溢出问题

    Using ExtJS in ASP.NETReturning data from ASP.net to an ExtJS Grid - 这些都集中在 Ext 的控件上,但答案包含很多关于将新一代 javascript 框架控件连接到服务器应用程序的一般信息。

    Good Asp.Net excel-like Grid control - 您可能也对这个问题的答案感兴趣,特别是因为听起来您需要可靠的编辑功能。

    【讨论】:

    • 谢谢!哇!信息过载:) 我正在查看 Coolite 的 .NET 的 Ext 包装器,但我没有看到 GridView,但 PropertyGrid 和 DataView 之类的东西.....我假设这些可能会起作用。再次感谢,我将不得不仔细研究这些并做出决定。
    【解决方案2】:

    是的。 jqGrid 效果很好。试试the demos。我们将它与 ASP.NET MVC 一起使用。

    更新:在您更新的问题中,您询问了如何将 jQuery 等框架与 WebForms 结合使用。你能做这个吗?当然。你愿意吗?这是一个更难的问题。在 WebForms 中,您通常让 WebForms 为您生成 JavaScript。这就是为什么你有 UpdatePanel 之类的。一方面,这很容易,因为您可以将编码注意力集中在 C# 上,并且您可以使用不需要编写任何 JavaScript 的网格组件来使它们工作。另一方面,您受限于生成的代码可以做什么。是的,您可以手动编写 JavaScript,甚至在 WebForms 中,但您必须解决框架所做的一些事情,例如更改控件上的 ID。是的,您可以在 C# 中编写事件处理程序,但这需要使用回发,这不适合 HTTP,其后果对最终用户是可见的。

    在很大程度上将 jQuery 与 ASP.NET MVC 一起使用是很常见的,因为它随框架一起提供。但即使在此之前,将两者结合使用仍然很常见,因为 jQuery 可以很容易地完成 ASP.NET MVC 中不直接支持的事情,例如使页面上的控件相互交互。是的,这意味着您必须编写 JavaScript,但只要您对此感到满意,您就会获得巨大的优势,即您可以编写任何类型的交互,而无需回发到服务器。

    如果您只是在为 WebForms 寻找一个好的网格控件,那么我建议使用为 WebForms 设计的控件,而不是为 jQuery 设计的网格。原因是您将编写的代码更自然地适合 WebForms 的习惯用法。

    如果您只是想学习 jQuery,那么,这是一个非常好的主意,因为该框架很有趣、有用且设计良好,但我不确定一个出色的控件是否是最好的起点。一个更好的起点可能是为您现有的一些页面添加视觉风格。从已知的 HTML 开始并使用 jQuery 操作它比同时生成新的 HTML 和学习 jQuery 更容易。

    【讨论】:

    • 服务器是否可以访问?含义:我可以在我的 c# 代码中从网格中收集值吗?
    • 它不会自动连接到服务器。我正在使用当前的 alpha 版本,我自己做了一堆修改/扩展。连接起来并不难,很容易在 MVC 框架中与 JsonResult 操作一起使用。
    • 您的意思是,例如,您可以将编辑内容发布到服务器吗?是的,但是 jQuery 当然不知道 ASP.NET 回发。所以不是通过 ASP.NET 事件。 “保存”将是一个单独的 POST。
    • 没关系,我希望用户明确按下将提交表单的“保存”按钮。我想我的问题是如何在 c# 代码中收集网格数据。
    • 收集网格数据取决于您最终使用的技术,但有人将不得不在客户端编写代码来收集数据并通过 Ajax 将其发送到服务器方法。像coolite 这样的包装器可以自动实现这一点。在其他情况下,您必须自己做。 :)
    【解决方案3】:

    我目前使用DataTables。这允许您创建一个 html 表并为多列、多列排序、分页等应用过滤器。您可以选择在客户端处理 html 表或从 AJAX 源接收数据。

    它还有一个用于动态添加行、动态显示列和分组的 API。

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案5】:

        根据您的评论(关于 Craig 提到 jqGrid),您可能会想要使用 jqGrid、FlexiGrid 或其他客户端替代方案,并自己将其连接到服务器端,或者使用会更好一个非基于 jquery 的商业 ajax 网格组件。

        如果您使用 MVC(如 Craig Mentions),jqGrid 非常适合。在 MVC 中将 jqGrid 事件连接到 JsonResult 控制器操作相当容易。

        【讨论】:

        • 谢谢:) 不,我没有使用 MVC。我们正在使用 ASP.net 表单。我目前正在使用 GridView(asp.net 控件),并且我有兴趣尝试更多的客户端开发以改善用户体验。
        【解决方案6】:

        【讨论】:

          【解决方案7】:

          我在http://arahuman.blogspot.com/2009/06/jqgrid-using-mvc-json-and-datatable.html找到了一个使用 DataTable 和 JQgrid 的示例

          【讨论】:

          • 谢谢!从日期来看,它也很新。这个项目实际上被推迟了,所以我有时间考虑几个选项。
          【解决方案8】:

          你可以试试我的免费WebGrid DataGrid,它使用 JQuery 并且是 JQuery ThemeRoller-Ready

          【讨论】:

            【解决方案9】:

            jsGrid 是一个轻量级的 GridView jQuery 插件js-grid.com

            它非常可定制,可以与任何数据源一起使用。

            【讨论】:

              猜你喜欢
              • 2012-10-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-07-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多