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

时间:2008-08-19 21:09:31

标签: asp.net data-controls

如果其他人和我一样感到好奇。对我来说,控件如datagrid / gridview / formview / etc.非常适合演示或演示。要花时间调整这些控件,覆盖它们的默认行为(挂进他们的愚蠢事件等)是一件非常令人头疼的问题。我使用的唯一控件是转发器,因为它为我提供了最大的灵活性。

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

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

同样,如果您需要快速浏览这些控件,那么这些控件非常棒(特别是如果您试图让人们更容易进行.NET开发)。

我必须处于少数,否则MS不会在这些类型的控制上投入如此多的开发时间......

26 个答案:

答案 0 :(得分:49)

任何认为没人使用*网格控件的人显然从未在内部企业网络应用程序上工作过。

答案 1 :(得分:17)

我几乎都在编写自己的HTML - 我正在使用ListView和Masterpages,但实际上并没有真正使用控件。顺便说一句,我的ListView嘲笑你那个愚蠢的旧转发器。

然而,英国媒体报道并不一定是件坏事。如果我需要构建一个低容量的Intranet应用程序,我宁愿付出一个经验不足的开发人员拖放控件而不是HTML twiddler(像你或我)来制作每个标签。这里有一个快速,简单的方法。只要基于控件的代码以可维护的方式编写,那么在这种情况下“bloatware”的成本是多少?通常将布线控制在一起需要较少的自定义代码,这意味着维护简单。

我不得不反对你的一个地方 - 几乎不管应用程序 - 都在制作你自己的分页查询。你可能喜欢这样做,但它绝对没有商业价值。有几种专业级DAL工具通常会编写比大多数开发人员更易维护,更快速的查询。即使您精心制作完美的分页查询,它也无法及时更新架构,除非您继续花费数小时的时间。我认为更好地利用这些时间是建立一个轻量级系统,并将这些时间用于监控和修复特定的瓶颈,而不是立即跳转到“数据库汇编语言”层。

答案 2 :(得分:15)

我一直在读你的帖子,这让我感到愚蠢。

我的意思是在我工作的每个应用程序中,其中至少有一个datagrid / gridview。而且我没有感觉我错过了什么。

当然,我发现datagrid / gridview有点臃肿,但他们使用的是恶心的吗?

答案 3 :(得分:13)

我认为在你谴责之前你需要学会使用GridViews。我广泛使用它们。起初,弄清楚某些事情有点挑战,但现在它们是不可或缺的。

使用AJAX CRUD和分页的UpdatePanel中的GridView很快。以这种方式设置的较大系统之一(用于内部/外部应用程序)在后端具有适度大小的数据库。有许多nvarchar(2000)字段,转换和更新都很棒。

无论如何,如果您编写了自己的显示数据版本,则可能需要继续使用它。 (可以用来编写自己的编译器,编写自己的HTML版本,编写自己的数据访问二进制版本......)使用GridView的优点是有很多人熟悉它并且MSFT已经抽象/建模了该类,以完成我们以前必须手动完成的许多事情。

答案 4 :(得分:4)

我们公司开发的每个应用都有网格(应用程序都在防火墙之后)。这包括Web应用程序和Winform应用程序。对于网络应用程序,它是我们使用Janus网格的winform应用程序的自定义排序的良好网格视图。我试图让开发人员/用户想到更好的用户界面,但这很难改变。我必须承认它仍然比使用Access构建他们的“自己的”应用程序的用户更好,然后我需要支持!

答案 5 :(得分:4)

使用像GridView这样的控件非常适合简单的应用程序。即使你是一个服务器端的HTML支架 - 笨拙的忍者,他们也可以使开发简单的东西更省时。问题是他们通常最终会开始暴露他们的缺点,最终你不得不花时间调整它们。但至少你可以起床并快速开始。

例如,GridView中的默认分页不支持数据库本身的分页(你必须先加载所有行才能分页),所以一旦你开始感觉到性能上的压力,你可能需要考虑滚动你自己,或者更好的是,找到一个更有能力的网格控制。

无论如何,重点是预构建的组件。他们帮助。但是像往常一样,这取决于你需要他们做什么。

答案 6 :(得分:3)

我实际上广泛使用GridView作为管理控制台。我甚至创建了一个自定义DataFieldControl,它根据数据字段设置字段的标题文本和排序表达式,在底部创建一个Insert行并自动收集行中的值并将它们转发到数据源的insert方法,并生成一个列表框如果指定了其他列表数据源。虽然投入了大量的时间,但它确实很有用。

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

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

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

</asp:GridView>

答案 7 :(得分:2)

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

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

结合

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

  • 一组对象(ListArrayListHashtable或任何简单的集合)
  • 您的代码隐藏中的
  • SqlDataReader(yikes,这将需要您的表示层中的SQL)
  • SqlDataSource(指定存储过程。结果集上的所有列都直接映射到网格的列。如果报告不模仿您的域对象,那么非常是快速和脏的很好。即不同事物的总结。)
  • objectDataSource(绑定到BL上的方法)

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

我认为您不能忽视内置GridView和其他第三方网格的RAD优势。管理类型喜欢并希望获得表格数据。

答案 8 :(得分:2)

我在我工作的公司环境中广泛使用它们,而我现在正在使用它们。那些不使用它们的人让我想起了那些“我用记事本建造它”的开发人员。如果你不打算节省时间,那么使用asp.net会有什么意义呢?

答案 9 :(得分:2)

GridView / FormView / DataGrid等组件遵循80/20规则。

这意味着80%的时间用于简单目的时,他们可以完成工作并且非常容易实现。

但是,有20%的时间你会尝试构建一些复杂的(或奇怪的)并且你将被迫跳过十几个箍并以多种方式弯曲代码以尝试实现解决方案。

诀窍是要知道问题是80问题还是20问题,如果你能早点发现问题,你最好自己从头开始编写代码并放弃“省时”问题。

答案 10 :(得分:2)

我也想看看为什么GridView等被认为是“膨胀软件”的扩展答案。我已广泛使用GridView以及第三方产品(Telerik等),并发现对于大多数内部和一些外部项目,它们运行良好。它们快速,易于使用,可定制 - 以及 BEST - 我可以将它们交给知道GridViews的人,然后他们可以轻松地从我离开的地方继续。如果我手动编写所有众多应用程序/控件的代码,那么即使在最好的情况下,下一个确定正在发生的事情的人的开销也是巨大的。

对我来说,我可以看到一些第三方产品是英国媒体报道软件(但有时仍然很有用),但我发现基于简单查询的裸机GridView非常快。

答案 11 :(得分:2)

一旦我从用户故事开始设计,而不是从数据库表要求开始设计,我基本上放弃了网格。从来没有可编辑的网格。旧的方式就是我们如何强迫用户为我们的系统进行数据输入/表格维护,它从未与他们的工作流程相匹配 - 任何真正的工作最终都会从一个主/子表单跳到另一个。

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

例外是分析应用程序。但是这些相对较少,而且它们基本上是只读的。

答案 12 :(得分:2)

我们在内联网应用上使用Infragistics UltraWebGrid + LinqDataSource。

它为我们提供了ajax,排序,过滤,分页所有服务器端。

“export to excel”也是一个杀手锏。

我们拥有5000多名用户,数据量大,性能优异。

答案 13 :(得分:2)

我非常喜欢telerik radgrid。他们的产品并不便宜,但你可以获得很多控制和功能。数据绑定支持非常好,无论是在简单的asp.net数据源绑定方式还是在更自定义的handle-your-own-databinding-events方式中。

答案 14 :(得分:2)

它们是asp.net的好处之一。直到最近我才讨厌它们,但是一旦你了解了哪些设置必须改变哪些实例,你就越容易使用它们。主要是我喜欢表格视图和列表视图,gridview仍然需要一些工作。

答案 15 :(得分:2)

我喜欢GridView控件,并在我公司网站的几个自定义DotNetNuke模块中使用它。首先,使用内置控件意味着更少的依赖性需要担心。一旦我设置了我想要的东西,我基本上将代码复制到其他页面,只需要做一些小调整。

我发现现代网格控件(Infragistics,T​​elerik等)有很多选项,配置网格需要的时间比其他任何东西都要长。 MS控件非常简单,但几乎可以做任何事情。

答案 16 :(得分:2)

在我的公司,我们到处都使用网格,主要是ComponentArt网格(http://www.componentart.com/)。是的,它是英国媒体报道软件,但你获得了很多重新发明的功能:排序,分页,分组,列重新排序,内联编辑,模板化(服务器端和客户端)。客户端API也很不错。

答案 17 :(得分:1)

如果您在面向公众的网站上与设计师合作很多,那么您应该放弃GridView并坚持使用转发器。无论如何,这是我的意见 - 为了满足设计要求,我不得不拆开数百个GridView并将它们变成简单的中继器。

如果你在面向公众的网站上使用10英尺杆的DataGrids或GridViews附近,那么你必须使用CSS友好的控制适配器。 (此时您可能会发现在Repeater中执行它更容易。)在控制适配器可用之前,我会认为这些控件是开箱即用的。

我发现有太多的.NET开发人员对设计,可访问性,CSS,javascript,标准等没有很好的理解,这就是他们屈服于GridViews,ObjectDataSources等的原因。

答案 18 :(得分:1)

我很长时间以来一直在想这件事。这里似乎有一个共识,即网格控件是英国媒体报道。但是,任何人都可以明确地引用使用这些控件的成本吗?是否有过多的HTML发送到浏览器?服务器上的资源太多了?是否更快地生成HTML表(假设它写得很好)?

除了英国媒体报道问题之外,我还经常在增加UI要求时搁浅,以包含超出标准控件范围的功能。例如,在早期的ASP.Net版本中,我努力将图像放在列标题中。并且,我认为添加跨越多列的第二个顶级标题行仍然是一个挑战。在某些时候,与控制器搏斗以实现期望的效果变得非常困难。如果您知道自己想要的HTML,那就太令人沮丧了,但是你无法让控件做到这一点。

在一个项目中,我终于放弃了自己写了一个HTML表类来生成一个非常复杂的网格。它花了几天时间才恰到好处。但是,现在我已经掌握了基本代码,并且为将来的网格进行调整会更有效率。

毫无疑问。如果您能够在他们的限制范围内生活,那么很难击败花哨的网格控件以实现快速开发。

答案 19 :(得分:1)

GridView是一个很好的非常强大的控件,可以很好地适应css或主题。令我讨厌的唯一一件事是,当旧的1.1 DataGrid被asp.net 2.0中的GridView替换时,VirtualCount属性被删除,并且它对于实现自定义分页很有用。但是可以通过数据适配器完成相同的操作
尽管使用中继器可能更清晰,并且您可以完全控制渲染的html,但我仍然不建议这样做,因为更难实现和维护。

答案 20 :(得分:1)

从长远来看,我会尽量避免使用datagrid / gridview,它有时变得过于hacky使它完全符合你的需要,经过一定数量的调整后你开始意识到从长远来看它不会节省时间而你可能无法控制您需要的标记。

然而,内置的分页和排序功能运行良好,并且在2008年有一个新的ListView控件,旨在对这些问题进行排序,并让您更严格地控​​制输出的html。

答案 21 :(得分:1)

我从未使用过它。我完全同意,这是英国媒体报道。我通常最终使用转发器和我制作的自定义控件。

答案 22 :(得分:1)

之前我从未真正使用过标准的WinForms网格,但在我上一份工作中,我们广泛使用了ComponentOne FlexGrid并且工作得非常好。试图获得我们想要的所有定制仍然有一些烦恼,但总体而言,它为我们节省了大量时间并产生了美好的结果。

目前我正在使用Silverlight 3和RIA Services,我无法想象在没有DataGrid和DataForm控件的情况下尝试生成我们正在做的事情。节省的时间远远超过任何开销。

答案 23 :(得分:0)

我是一个中等水平的开发人员,我可以说没有这些控制,我无法学习开发。只有你自己承认它一段时间,直到你找到自己的方式来定制它,最终的结果会很棒< / p>

答案 24 :(得分:0)

我试图在上下文中看一下。我有一个页面有一个很好的gridview(一次显示10行,6列,排序和分页),如果我只是看看与viewstate一起创建的html表,我只看到29k的代码

使用转发器或列表视图的29k对18k是否值得在这些宽带时间内付出所有努力?

我个人坚持使用gridviews但是我工作的设计人员有时会抱怨试图通过CSS设置它。

答案 25 :(得分:0)

只是阅读你的帖子。我同意PHP比asp更容易。但我刚开始使用visual studio进行表单和网格视图。无论是vb还是C#程序员都无法轻松搞定。 ASP上传大文件时仍然存在问题。 PHP它很容易。我在IIS 7.5下运行PHP