This is a migrated thread and some comments may be shown as answers.

GridView - Getting the column datatype?

7 Answers 1050 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Adrian
Top achievements
Rank 1
Adrian asked on 22 Nov 2012, 03:18 PM
Hello there, is it possible to programatically find out what the datatype is for a column in a RadGridView control?  By datatype I mean things like int, string, etc.

7 Answers, 1 is accepted

Sort by
0
Dimitrina
Telerik team
answered on 22 Nov 2012, 03:23 PM
Hello,

You could find it through the DataType property of the bound column. Have you tried this?

Greetings,
Didie
the Telerik team

Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

0
Adrian
Top achievements
Rank 1
answered on 22 Nov 2012, 03:37 PM
I managed to do this and was just about to post it here when I noticed your post.  You are right about the DataType property, however I had to cast my column as a GridViewDataColumn in order to see it (it was not immediately obvious that I needed to do this, and the DataType property was not visible without the cast).
((Telerik.Windows.Controls.GridViewDataColumn)radGridView.Columns[0]).DataType

Thanks anyway.
0
Ben
Top achievements
Rank 1
answered on 18 Aug 2015, 06:18 PM

Is it possible to set a custom attribute on my data, and read that same attribute from the DataType property in my OnAutoGeneratingColumn event handler?

 

My initial tests show that the name and type are correct, but I see no attributes that I had added.

0
Dimitrina
Telerik team
answered on 19 Aug 2015, 12:05 PM
Hi,

How have you set a custom attribute? Basically, RadGridView respects Data Annotations and you can try this. You can check the following msdn article:
Using Data Annotations to Customize Data Classes.

Regards,
Dimitrina
Telerik
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 Feedback Portal and vote to affect the priority of the items
0
Ben
Top achievements
Rank 1
answered on 19 Aug 2015, 06:19 PM

First off, I apologize, this was meant for the WPF forum, but I posted too quickly. Please move it if you need to.

I am using some of the DataAnnotations attributes, and they work wonderfully. My hope was to set which properties would aggregate with a format string with a custom attribute. Something like below. 

[Display(Name = "Trade Amount")]
[DisplayFormat(DataFormatString = "{0:C}")]
[DisplayAggregate(AggregateFunction.Sum, ResultFormatString = "Total: {0:C}")]
[DisplayAggregate(AggregateFunction.Min, ResultFormatString = "Min: {0:C}")]
public double Amount { get; set; }

 I actually got this working after posting, but it is a bit of a workaround. In the AutoGeneratingColumn event, I match the column name against the RadGridView item and pull the attributes from there, not the column.datatype. But if there is a more elegant solution, I wouldn't mind changing my existing work. 
 Cheers.

private void ResultsGridView_OnAutoGeneratingColumn(object sender, GridViewAutoGeneratingColumnEventArgs e)
{
    var column = e.Column as GridViewDataColumn;
    if (column == null || ResultsGridView.Items.Count == 0) return;
    var propName = column.DataMemberBinding.Path.Path;
    var props = ResultsGridView.Items[0].GetType().GetProperties();
    var aggregates = (from prop in props where prop.Name == propName select (DisplayAggregate[]) prop.GetCustomAttributes(typeof (DisplayAggregate), false)).FirstOrDefault();
    AddAggregatesToGridColumn(aggregates, column);
}

0
Dimitrina
Telerik team
answered on 20 Aug 2015, 12:23 PM
Hello,

As it turns out there is not a more elegant way to propose.

Regards,
Dimitrina
Telerik
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 Feedback Portal and vote to affect the priority of the items
0
Ben
Top achievements
Rank 1
answered on 20 Aug 2015, 04:12 PM
Fair enough. Thank you for your time.
Tags
GridView
Asked by
Adrian
Top achievements
Rank 1
Answers by
Dimitrina
Telerik team
Adrian
Top achievements
Rank 1
Ben
Top achievements
Rank 1
Share this question
or