谁在生产应用程序中实际使用DataGrid/GridView/FormView等控件?

7

想知道其他人是否和我有同样的感觉。对我来说,像datagrid/gridview/formview等控件仅适用于演示或演示。花时间调整这些控件,覆盖它们的默认行为(钩入它们愚蠢的事件等)非常麻烦。我使用的唯一控件是repeater,因为它可以为我提供比其他控件更多的灵活性。

简而言之,它们几乎都是臃肿的软件。

我宁愿编制自己的html/css,使用自己的自定义分页查询。

再次强调,如果您需要快速创建页面,则这些控件很棒(特别是如果您正在尝试追求易于.NET开发)。

我必须是少数派,否则微软不会将这些类型的控件作为开发时间的重点......


所有的asp.net控件都是这样的。它们对于本应该非常简单的HTML和JS交互,进行了可怕而极其奇怪的抽象。放弃它们,选择一个普通的、易用的模板语言吧。我不知道为什么人们自愿使用那些会削弱他们开发选项并带来疯狂边缘情况问题的东西。 - Andy Ray
26个回答

51

如果有人认为没有人使用*Grid控件,那么显然他们从未在企业内部的Web应用程序上工作过。


5
我同意......在你可以控制用户基础、拥有大量磁盘空间、高带宽和强大服务器的环境中,通常可以从使用标准的ASP.NET控件来快速开发中获益。 - mattruma
2
在仔细思考了这个帖子之后,我同意了,我不太明白为什么会有人讨厌GridView。我在外部应用程序中广泛使用它,效果非常好。你可以轻松地利用许多事件(如rowUpdating、rowEditing)等... - Dalbir Singh

17

我基本上是在编写自己的HTML - 我正在使用ListView和Masterpages,但不再常常使用控件了。顺便说一句,我的ListView嘲笑你那老掉牙的repeater。

然而,臃肿的软件并不一定是坏事。如果我需要构建一个低容量的内部网络应用程序,我更愿意支付一个经验较少的开发者来拖放控件,而不是让一个HTML调试专家(像你或我)去精心编写每个标记。快速、简单的方法肯定有其适用的场合。在这种情况下,“臃肿的软件”成本是多少,只要控件代码是按可维护的方式编写的呢?通常连接控件所需的自定义代码较少,这意味着简单的维护。

我必须与你不同意的唯一一点 - 几乎无论应用程序如何 - 就是编写自己的分页查询。你可能喜欢做那样的事情,但它绝对没有商业价值。有几款专业级DAL工具通常会比大多数开发人员编写更易于维护、更快的查询。即使你精心制作出完美的分页查询,除非你继续花费数小时,否则它不会跟随模式的变化而更新。我认为更好的利用这些时间是构建一个轻量级系统,并将这些时间投入监视和修复特定瓶颈,而不是立即跳到“数据库程序语言”层。


15

我一直在阅读你们的帖子,感觉自己很蠢。

我的意思是,在我工作的每个应用程序中,都至少有一个数据网格/网格视图。 我并没有感到我错过了什么重要的东西。

当然,我觉得数据网格/网格视图有点臃肿,但它们是否如此令人讨厌?


3
不要感到愚蠢。许多人使用它们。它们很有用,可以做出一些很棒的东西。 - achinda99

13

我认为在谴责GridView之前,你需要学习如何使用它们。我经常使用GridViews。起初,有些东西很难理解,但现在GridViews已成为不可或缺的。

带有AJAX CRUD和分页的UpdatePanel内的GridViews非常快。其中一个较大的系统(用于内部/外部应用程序)以此方式设置了一个中等大小的后端数据库。有许多nvarchar(2000)字段,其过渡和更新效果很好。

无论如何,如果您编写了自己的显示数据版本,并且它能够正常运行,那么您可能想要继续使用它。(同样的论点也可以用于写自己的编译器、HTML版本或数据访问二进制文件的版本等)。使用GridView的优点是有许多熟悉它的人,并且Microsoft已将该类抽象化/建模为可以自动完成我们以前必须手动完成的许多操作。


4

我们公司开发的每个应用程序都有网格(这些应用程序都在防火墙后面)。包括Web应用程序和Winform应用程序。对于Web应用程序,它是传统的GridView,具有自定义排序功能,而对于Winform应用程序,我们使用Janus Grid。我正在尝试让开发人员/用户考虑更好的用户界面,但这很难改变。我必须承认,这仍然比用户使用Access构建他们自己的应用程序更好,因为那样我就需要支持他们!


4
使用像GridView这样的控件非常适合简单的应用程序。即使你是一个服务器端的HTML标签调整专家,它们也可以让开发简单的东西更加省时。问题在于,它们通常最终会暴露出自身的不足,你最终不得不花时间进行调整。但至少你可以快速启动并开始使用。
例如,GridView中的默认分页不支持在数据库中进行分页(必须在页面加载所有行之前进行分页),因此一旦你感觉到性能瓶颈,你可能需要考虑自己编写或者找到一个更强大的网格控件。
总之,预先构建的组件是好的,它们有助于开发。但通常情况下,这取决于你需要它们做什么。

3

我曾广泛使用GridView作为管理控制台。我甚至创建了一个自定义的DataFieldControl,根据数据字段设置字段的标题文本和排序表达式,在底部创建一个插入行,并自动收集该行中的值并将其转发到数据源的插入方法,并生成一个列表框(如果指定了附加的列表数据源)。尽管需要巨大的时间投资来构建,但它非常有用。

我还有另一个控件,当没有记录时(在EmptyDataTemplate中),它将基于字段元数据生成新的数据表单。

<asp:GridView ...>
 <Columns>
       <my:AutoField HeaderText="Type" 
                      DataField="TypeId"
                      ListDataSourceID="TypesDataSource"
                      ListDataTextField="TypeName" />          
  </Columns>

    <EmptyDataTemplate>
        <my:AutoEmptyData runat="server" />
    </EmptyDataTemplate>

</asp:GridView>

我对你在这里描述的GridView非常感兴趣,您在表头上添加了自定义排序表达式。您能否分享您的代码? - Julius A

2

自从我开始根据用户故事进行设计而不是数据库表要求后,我就基本放弃了网格布局。而且永远不会使用可编辑的网格。旧的方式只是我们用来逼迫用户为我们的系统进行数据输入/表维护的方式,它从来没有符合他们的工作流程 - 任何真正的工作最终都会跳过一个主表单和子表单到另一个。

而用户从来没有想明白 - 但他们肯定知道我们的应用程序比他们应该使用的更难用。

例外是分析应用。但这些相对较少,而且它们大多是只读的。


2

我在我工作的公司中广泛使用它们,现在就正在使用其中之一。那些不使用它们的人让我想起了过去所有那些“我用记事本构建它”的开发人员。如果你不利用时间节省,使用asp.net的意义何在?


2

对于我的企业内部网项目来说,网格是不可或缺的。它们是在ASP.NET webforms平台上轻松报告的基础。

易于设计 将网格粘贴到页面上。插入BoundField对象进行简单绑定。asp:HyperlinkField用于轻松链接。

绑定

您可以以几种方式绑定网格:

  • 对象集合(ListArrayListHashtable或任何简单集合)
  • SqlDataReader在您的代码后台中(糟糕的是,这将需要在演示层中使用SQL)
  • SqlDataSource(指定存储过程。结果集上的所有列直接映射到网格的列。如果报告不很好地模仿您的域对象,则非常快速且脏。即不同事物的总和。)
  • objectDataSource(绑定到BL上的方法)

对于那些可能会提到SqlDataSourceObjectDataSource的人,您并不总是必须在.aspx.cs或.aspx.vb中声明它们。我在这里不是为它们辩护,只是指出可能性。

我认为您不能忽略内置GridView和其他第三方网格的RAD好处。管理类型喜欢并且需要表格数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接