Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Telerik RAD控件,如何将(GridViewRowInfo的)列表设置为RadGridView数据源?_C#_.net_Vb.net_Telerik_Telerik Grid - Fatal编程技术网

C# Telerik RAD控件,如何将(GridViewRowInfo的)列表设置为RadGridView数据源?

C# Telerik RAD控件,如何将(GridViewRowInfo的)列表设置为RadGridView数据源?,c#,.net,vb.net,telerik,telerik-grid,C#,.net,Vb.net,Telerik,Telerik Grid,我正在寻找一个C#或VB.NET解决方案 更新: 我有一个RadGridView,其中有5个由我手动定义的列: AutoGenerateColumns属性设置为False 当我安装一个GridViewRowInfoclass时,我可以为这个对象设置很多属性: Dim MyRow As New GridViewRowInfo(Me.RadGridView1.MasterView) With MyRow .Cells(0).Value = "My Value for Column 1"

我正在寻找一个C#或VB.NET解决方案


更新:

我有一个RadGridView,其中有5个由我手动定义的列:

AutoGenerateColumns
属性设置为
False

当我安装一个
GridViewRowInfo
class时,我可以为这个对象设置很多属性:

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)
那么,我的意图是将这些行的集合设置为
数据源
,例如:

RadGridView1.DataSource = MyRows
所以首先要注意的是,我设置了一个
GridViewRowInfo
集合,并且为每个
GridViewRowInfo
设置了不同的属性,这些属性在添加数据源集合时应该生效,第二件事是,如果我更新数据源集合以删除或添加更多行,那么
RadGridView
控件应该自动执行更新,而无需更多干预…不是吗

问题是这些事情都会发生:

如上图所示,当我将
列表(GridViewRowInfo)
设置为我的
数据源
时,它只会添加空行,并且如果我之前设置了其中一个
GridViewRowInfo
高度
属性,则在设置
数据源时不会生效:

我希望以更直接、更不奢侈的方式执行此操作,我的意思是,我不希望创建一个自定义类,以便能够将该类设置为
DataSource
,并复制所有公开
GridViewRowInfo
类或自定义类中如此棘手的内容的属性,因为如果<代码> RADGRIDVIEW/COD>公开了一个好的<代码> GridViewRowInfo < /代码>类,我需要我为什么要考虑创建一个自定义类来设置它,我的<代码>数据源< /代码>?< /p> 如果我对这些概念没有好的想法或理解错误,请澄清它们,我知道数据源的使用不应该以这种方式使用(或者我认为是这样),但我真的希望这样做,以简化事情,更直接地使用数据源(和每行属性),而不是控件本身



我还尝试了中的官方示例(但只是使用了
列表(字符串)
),但它只是在gridview中的列单元格中添加了一个名为“Length”(带有数字数据)的新列。

RadGridView支持两种填充数据的方式:

  • 您可以在其中手动将列和行添加到网格(就像您所做的那样)
  • 其中,您将控件的数据源属性设置为支持的类型之一,即
    • 用于简单类型或自定义对象
    • 用于简单类型或自定义对象
    • `实现
    • 或来自各种提供商(MS SQL、Oracle、Access、, 任何可通过OleDb访问的内容)
因此,无法将网格绑定到GridViewRowInfo集合(因为您将只看到GridViewRowInfo类型属性)。您应该继续像现在这样手动添加,或者您可以使用数据填充DataTable,并将其设置为网格的数据源


*所有链接和信息都来自Telerik UI for WinForms文档

,如果我对这些概念没有好的想法或误解,请澄清它们

你把显示什么和如何显示它们混淆了,这是两件截然不同的事情。从他们的在线指南:
RadGridView支持标准的Windows窗体数据绑定模型
,也就是说,数据源为控件提供数据,而不是表示信息

公共类MyObject
公共属性MyInt()为整数
公共属性MyString()作为字符串
...
Dim myList作为新列表(MyObject)()
myList.Add(新的MyObject(1,“户外”))
添加(新的MyObject(2,“硬件”))
添加(新的MyObject(3,“工具”))
添加(新的MyObject(4,“书籍”))
添加(新的MyObject(5,“设备”))
RadGridView1.DataSource=myList
结果:

注意控件如何自动从自定义类中提取属性名:
MyInt
MyString
成为列名。这是网格从数据源获取的唯一与布局(如何)相关的内容,并且只有当
AutoGenerateColumns
为真时(否则它们将为空)。如果为False,则通过布置列来控制它

现在看看您正在尝试什么:

与MyRow
.Cells(0).Value=“第1列的我的值”
.Cells(1).Value=“第2列的我的值”
...
.高度=50
.Tag=新对象
.IsSelected=True
作为一个数据源,它有很多问题。主要来说,您不是为单元格提供数据,而是为单元格提供单元格中的数据。您的方法混合了未绑定方法(显式指定每个单元格中的内容)和绑定到数据源的方法

但是,它如何知道
是一个数据显示项呢?如何知道钻取单元格集合以查找
?如何知道
是数据,而
标记
不是?如何知道不尝试将
高度
显示为列数据?仅仅因为名称与控件的属性名称匹配

如果
myObject
碰巧有一个与我的类相关的
Height
属性,会发生什么?您希望控件将其解释为控件布局信息,但世界其他地方都希望患者的