Hi,
I have been looking to see if there is some built-in support for databinding the RadGridView to indexers. Any links to examples/samples would be greatly appreciated. In my particular case, I have:
class A, which has a several properties and a class B Property
class B, has several properties and indexer access by string and index
I would like to bind the RadGridView so for each row in the grid, I can see the underlying:
A properties
B's properties (the B instance accessed thru one of A's properties)
see select B values returned by B's indexer
Any assistance would be greatly appreciated.
I have been looking to see if there is some built-in support for databinding the RadGridView to indexers. Any links to examples/samples would be greatly appreciated. In my particular case, I have:
class A, which has a several properties and a class B Property
class B, has several properties and indexer access by string and index
I would like to bind the RadGridView so for each row in the grid, I can see the underlying:
A properties
B's properties (the B instance accessed thru one of A's properties)
see select B values returned by B's indexer
Any assistance would be greatly appreciated.
6 Answers, 1 is accepted
0

Emanuel Varga
Top achievements
Rank 1
answered on 07 Apr 2011, 08:39 AM
Hello Taylor,
Just to be clear, by indexers you mean dictionary, hashtable & so on?
If yes, then no, you cannot do it like this, but you can use lists & autogenerate hierarchy.
Please take a look at the following example:
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP
Just to be clear, by indexers you mean dictionary, hashtable & so on?
If yes, then no, you cannot do it like this, but you can use lists & autogenerate hierarchy.
Please take a look at the following example:
using
System;
using
System.Collections.Generic;
using
System.Windows.Forms;
using
Telerik.WinControls.UI;
public
partial
class
Form1 : Form
{
private
RadGridView radGridView1;
private
List<User> users;
public
Form1()
{
InitializeComponent();
this
.Controls.Add(radGridView1 =
new
RadGridView());
radGridView1.Dock = DockStyle.Fill;
users =
new
List<User>();
for
(
int
i = 0; i < 10; i++)
{
var user =
new
User
{
Id = i,
Name =
"Name"
+ i,
};
users.Add(user);
user.Addresses =
new
List<Address>();
user.Addresses.Add(
new
Address
{
AddressLine =
"Some addressLine"
});
if
(i % 2 == 0)
{
user.Date = DateTime.Now.AddMonths(i);
}
}
radGridView1.AutoGenerateHierarchy =
true
;
radGridView1.DataBindingComplete +=
new
GridViewBindingCompleteEventHandler(radGridView1_DataBindingComplete);
radGridView1.DataSource = users;
}
void
radGridView1_DataBindingComplete(
object
sender, GridViewBindingCompleteEventArgs e)
{
if
(radGridView1.Templates.Count != 0)
{
radGridView1.Templates[0].AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
}
}
}
public
class
User
{
public
decimal
Id
{
get
;
set
;
}
public
string
Name
{
get
;
set
;
}
public
List<Address> Addresses
{
get
;
set
;
}
public
DateTime? Date
{
get
;
set
;
}
}
public
class
Address
{
public
string
AddressLine
{
get
;
set
;
}
}
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP
0

Taylor
Top achievements
Rank 1
answered on 07 Apr 2011, 09:54 AM
In running your example, the values for the Addresses column are consistently System.Collections.Generic.List`1[TestSample.Address] . Is something not listed in your example required?
0

Emanuel Varga
Top achievements
Rank 1
answered on 07 Apr 2011, 11:14 AM
Hello again Taylor,
I don't really understand what you mean, i've just created a list of addresses, the address class that has just 1 property and it is added at the end of my example.
I just wanted to illustrate the fact that the grid creates hierarchy automatically if you have list properties inside your object.
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP
I don't really understand what you mean, i've just created a list of addresses, the address class that has just 1 property and it is added at the end of my example.
I just wanted to illustrate the fact that the grid creates hierarchy automatically if you have list properties inside your object.
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP
0

Taylor
Top achievements
Rank 1
answered on 07 Apr 2011, 08:59 PM
I was pointing out the the values that were returned running your sample. In your example, you provided the value "Some addressLine" during your Address iniitialization. I would assume that your sample should not be displaying the text 'System.Collections.Generic.List`1[TestSample.Address]' for the Address column's value in the grid but 'Some addressline". The Address's column is displaying the underlying object type as if it has not been correctly bound to a specific property of the Address object.
I am also trying to relate your answer to my original question. You said the grid can't be mapped to class indexers but it can be mapped to lists. In order to solve my problem, each Address instance in your User.Addresses list would have to be displayed in their own column. Using your class hierarchy, the results I am looking for would be able to accomplish a datagrid with columns for:
User.Id, User.Name, User.Addresses[0].AddressLine,User.Addresses[1].AddressLine,User.Date
I am also trying to relate your answer to my original question. You said the grid can't be mapped to class indexers but it can be mapped to lists. In order to solve my problem, each Address instance in your User.Addresses list would have to be displayed in their own column. Using your class hierarchy, the results I am looking for would be able to accomplish a datagrid with columns for:
User.Id, User.Name, User.Addresses[0].AddressLine,User.Addresses[1].AddressLine,User.Date
0

Taylor
Top achievements
Rank 1
answered on 07 Apr 2011, 09:00 PM
(Accidently duplicated post - Deleted)
0
Hello Taylor,
Julian Benkov
the Telerik team
For this scenario you can use the sub-properties binding feature of RadGridView control. More information you can find in our online documentation.
I hope this was helpful.
Julian Benkov
the Telerik team
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Public Issue Tracking
system and vote to affect the priority of the items