我在开发业务逻辑和数据库逻辑方面有一些经验,主要使用C#。现在我想在ASP.NET中构建我的第一个数据驱动的表示层。我只是想知道如何用数据填充DataGrids。
我有IList - 从我的BLL中检索的“Customer”等业务实体的集合。将整个集合绑定到控件很容易,但这意味着我的业务实体的所有公共属性都显示为列。我无法决定要显示哪些属性,应该如何排序以及如何显示它们(例如DateTime为ShortTimeString)。
您能否告诉我在哪里可以找到最佳实践示例或告诉我您是如何解决这个问题的?
祝你好运, Daniel Lang
答案 0 :(得分:2)
每当我绑定到网格时,我都要确保始终拥有属性AutoGenerateColumns = false
。然后我明确定义了我使用的列和模板。
我认为这是最好的做法,因为下一个编码器可能会出现并向您的对象添加内容而不会意识到它将自动添加到您将其绑定到网格的任何位置。它还会让您考虑每个字段,看看它们是否真的需要按原样或使用某种类型的模板进行查看。
AutoGenerateColumns属性是在演示中看起来非常酷的功能之一,但在现实世界中没有那么有用,可能会导致意外问题。
答案 1 :(得分:0)
我使用“脏”的技巧来格式化我对gridviews等的绑定。添加控件后,您可以(在设计器中)选择其数据源。我通常选择ObjectDataSource,在下一个向导屏幕上取消选中仅显示数据对象的框。然后我在我想要绑定的BLL中找到该函数(或者返回相同类/数据源的方法)并选择它。我通过向导开始,好像我真的绑定到那个方法,并且当它完成时,控件被格式化为对该源的双向绑定。
之后,我将表格中的objectdatasource对象删除,将控件的数据源设置为“NONE”。当它提示重新配置控件时,我只需单击否。控件现在已格式化并且未绑定。从这里(对于GridViews),您可以进入编辑列并使用设计器重新定位它们,格式化它们,应用样式,调整绑定等。
然而,作为最佳实践,我绑定到函数返回而不是真正的双向绑定。我们有特定的BLL / DAL对象来处理这些操作,因此我使用一种方法来检索数据,然后我们使用一种方法来放入数据。
答案 2 :(得分:0)
如@Kelsey所述,您应该设置AutoGenerateColumns = false
并手动定义列。但是,似乎您知道您应该只显示某些信息,但您不知道要显示哪些部分以及采用何种格式。
我无法决定要使用哪些属性 显示,他们应该如何订购和 它们应该如何显示(例如 DateTime as ShortTimeString)。
你可以告诉我在哪里找到 最佳实践示例或告诉我如何 你解决了这个问题吗?
这实际上取决于对应用程序用户最有用的内容。问自己一些问题。更好的是将这些问题提交给将使用它而不是你自己的人。
一些想法: