【发布时间】:2014-10-17 16:18:44
【问题描述】:
我正在为此寻找 C# 或 VB.NET 解决方案。
更新:
我有一个 RadGridView,其中包含 5 个手动定义的列:
AutoGenerateColumns 属性设置为False。
当我实例化 GridViewRowInfo 类时,我可以为这个对象设置很多属性:
Dim MyRow As New GridViewRowInfo(Me.RadGridView1.MasterView)
With MyRow
.Cells(0).Value = "My Value for Column 1"
.Cells(1).Value = "My Value for Column 2"
.Cells(2).Value = "My Value for Column 3"
.Cells(3).Value = "My Value for Column 4"
.Cells(4).Value = "My Value for Column 5"
.Height = 50
.Tag = New Object
.IsSelected = True
End With
当我添加该行时,我之前为该行设置的属性立即生效:
RadGridView1.Rows.Add(MyRow)
如果我想添加这些行的集合,我可以设置一个新的 GridViewRowInfo 集合,实现 IList 接口:
Dim MyRows As New List(Of GridViewRowInfo)
MyRows.Add(MyRow1)
MyRows.Add(MyRow2)
MyRows.Add(MyRow3)
RadGridView1.Rows.AddRange(MyRows.ToArray)
好吧,所以我的意图是将这些行的集合设置为DataSource,例如:
RadGridView1.DataSource = MyRows
所以首先要注意的是我设置了一个GridViewRowInfo 的集合,并且我为每个GridViewRowInfo 设置了不同的属性,这些属性在添加数据源集合时应该生效,第二件事是如果我更新数据源集合以删除或添加更多行,然后RadGridView 控件应该自动执行更新而无需更多干预......不是吗?
问题是这些事情都会发生:
如您在上图中所见,当我将List(of GridViewRowInfo) 设置为我的DataSource 时,它只会添加空行,如果我之前设置了Height 属性之一的@987654341 @里面设置Datasource时不生效:
我想以更直接的方式和不那么奢侈的方式执行此操作,我的意思是我不是在寻找创建一个自定义类来将该类设置为DataSource,并复制所有属性在我的自定义类中公开GridViewRowInfo 类或一些非常棘手的东西,因为如果RadGridView 公开了一个很好的GridViewRowInfo 类以及我需要的所有东西,为什么我应该考虑创建一个自定义类来将其设置为我的@987654347 @?。
如果我对这些概念没有一个好主意或误解,请澄清一下,我知道不应该以这种方式使用数据源(或者我认为是这样),但我真的很想这样做是为了进一步简化事情,直接使用数据源(和每个行属性)而不是控件本身。
我还尝试了this link 中的官方示例(但只使用了list(Of String)),但它只是在我的网格视图中添加了一个名为“长度”的新列(带有数字数据)在该列单元格中.
【问题讨论】:
-
您是手动设置 RadGridView 的列还是让它自动生成?
-
@har07 我手动设置了 4 列,抱歉我的无知,但我不知道为什么会这样,我想设置一个 List(of 'CompatibleRowForMyGrid') 就像上面的例子一样然后用这 4 个单元格来填充我的列中的数据,我不想生成新列,我等待您的帮助,感谢您的评论!
-
它通常的工作方式是控件完成了您试图通过该数据源强加给它们的大部分工作 - 将类简化为 4 个简单属性并省去
Cells杂乱无章的内容。如果 AutoGenerate 为 True,那么它将为它找到的每个属性创建列(参见示例链接,其中列是MyInt和MyString,它们是道具名称)。如果您希望 DS 填充您添加的现有列,则需要使用DisplayMember和ValueMember(可能还有FieldName)将列映射到属性。 -
Simplify the class to 4 simple properties and leave off the Cells cruft.什么类?我的意图不是创建自定义类,而是使用 GridViewRowInfo 类。 |If AutoGenerate is True then it will create columns for each property it finds阅读后我将AutoGenerateColumns设置为 False(但现在它添加了空行)。 -
If you want your DS to populate existing columns you added, you need to map Columns to Properties using the DisplayMember and ValueMember (and maybe FieldName)他们是...的成员?我在 RadGridView 控件或 GridViewRowInfo 类上看不到这些属性,反正一旦发现我不知道如何设置它们(看到这可能有点困难)。谢谢你的评论!
标签: c# .net vb.net telerik telerik-grid