C#/winforms:如何最好地绑定 propertygrid 和 System.Data.DataRow
我有 System.Data.DataRows 与几个字段,其中大多数只是普通类型,如 int、single、string。
使用 propertygrid 使它们可编辑的最佳方法是什么? 无论数据行有什么类型的字段,它都应该自动工作,但不应该显示所有字段。 我想提供应该隐藏的属性列表。
由于数据表是自动生成的,我无法添加自定义属性,例如 [Browsable(false)]
非常感谢!
i have System.Data.DataRows with several fields, most of them just plain types like int, single, string.
what is the best way to make them editable using a propertygrid?
it should work automatically no matter what kind of fields the datarow has, but it should not display all of them. i want to provide a list of properties that should be hidden.
since the DataTable is autogenerated i cannot add custom attributes like [Browsable(false)]
thanks a lot!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编辑以处理过滤; 更复杂的是:除了获取 DataRowView 之外,我们还需要提供一个自定义组件来假装(通过传递 PropetyDescriptor)为 DataRowView code> (它本身伪装成
DataRow
) - 并过滤掉我们不需要的属性。非常有趣的问题 ;-p 在经典类中更容易解决,但以下适用于
DataRow
;-p请注意,您可以在该区域执行其他操作以使某些属性不可编辑(< code>IsReadOnly),或具有不同的标题 (
DisplayName
) 或类别 (Category
) - 通过覆盖RowWrapperDescriptor
中的其他成员>。Edited to handle filtering; much tricker: in addition to getting the
DataRowView
, we need to provide a custom component that pretends (via pass-thruPropetyDescriptor
s) to be theDataRowView
(which is itself pretending to be theDataRow
) - and filter out the properties that we don't want.Very interesting problem ;-p Easier to solve in classic classes, but the below works for
DataRow
;-pNote that you could do other things in this area to make some of the properties non-editable (
IsReadOnly
), or have a different caption (DisplayName
), or category (Category
) - by overriding other members inRowWrapperDescriptor
.