【问题标题】:Best practice grid binding最佳实践网格绑定
【发布时间】:2010-02-10 18:44:46
【问题描述】:

我在开发业务逻辑和数据库逻辑方面有一些经验,主要使用 C#。现在我想在 ASP.NET 中构建我的第一个数据驱动的表示层。我只是想知道如何用数据填充我的 DataGrid。

我有 IList - 我从 BLL 中检索到的业务实体集合,例如“客户”。将整个集合绑定到控件很容易,但这意味着我的业务实体的所有公共属性都显示为列。我无法决定要显示哪些属性、它们应该如何排序以及它们应该如何显示(例如 DateTime 作为 ShortTimeString)。

您能否告诉我在哪里可以找到最佳实践示例或告诉我您是如何解决这个问题的?

最好的问候, 丹尼尔·朗

【问题讨论】:

    标签: asp.net data-binding gridview datagridview


    【解决方案1】:

    每当我绑定到网格时,我都会确保始终拥有属性AutoGenerateColumns = false。然后我明确定义我使用的列和模板。

    我认为这是最佳实践,因为下一个编码员可能会出现并向您的对象添加一些内容,而没有意识到它会自动添加到您将其绑定到网格的任何地方。它还可以让您考虑每个字段,看看他们是否真的需要按原样或使用某种类型的模板来查看。

    AutoGenerateColumns 属性是那些在演示中看起来很酷但在现实世界中没有那么有用并且可能导致意外问题的功能之一。

    【讨论】:

    • 感谢您的建议 - 这看起来像是“真正的”最佳实践!
    【解决方案2】:

    我使用一种“肮脏”的技巧来格式化我在网格视图等上的绑定。添加控件后,您可以(在设计器中)选择其数据源。我通常选择 ObjectDataSource 并在下一个向导屏幕上取消选中仅显示数据对象的框。然后我在我的 BLL 中找到我打算绑定的函数(或返回相同类/数据源的方法)并选择它。我在向导中闪现,就好像我真的绑定到那个方法一样,当它完成后,控件被格式化为一个 2-way 绑定到那个源。

    之后,我删除表单中的 objectdatasource 对象,并将控件的数据源设置为“NONE”。当它提示重新配置控件时,我只需单击否。该控件现在已格式化且未绑定。从这里(对于 GridViews),您可以进入编辑列并使用设计器重新定位它们、格式化它们、应用样式、调整绑定等。

    然而,作为最佳实践,我绑定到函数返回而不是真正的 2 路绑定。我们有特定的 BLL/DAL 对象来处理这些操作,所以我使用一种方法来检索数据,然后我们使用一种方法来放入数据。

    【讨论】:

      【解决方案3】:

      正如@Kelsey 所说,您应该设置AutoGenerateColumns = false 并手动定义列。但是,您似乎知道您应该只显示某些信息,但您不知道要显示哪些片段以及以什么格式显示。

      我无法决定要使用哪些属性 展示,他们应该如何被订购和 它们应该如何显示(例如 日期时间为 ShortTimeString)。

      你能告诉我在哪里可以找到吗 最佳实践示例或告诉我如何 你解决了这个问题?

      这实际上取决于什么对您的应用程序的用户最有用。问自己一些问题。最好向除了您自己以外的其他人提出这些问题。

      一些想法:

      • 用户有兴趣看到什么?
      • 不要只显示数据来显示它
      • 它应该为用户服务
      • DateTime 格式 - 用户需要查看的不仅仅是 ShortTimeString 吗?知道这一天会帮助他们吗?也许在工具提示中显示长字符串并显示短字符串以节省空间。

      【讨论】:

      • 感谢您的帮助!正如您可能已经认识到我的英语不是那么好 - 我实际上的意思是我不知道如何实现某些属性没有显示。顺便说一句,您的建议很有帮助,我会在工作中考虑它们!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      相关资源
      最近更新 更多