Approved
Last Updated: 15 Oct 2019 12:09 by ADMIN
Currently when grouping the summary row for each group is shown. The ShowTotals property defines if total summary rows will be shown. Need an option to define if the group summary row will be shown.
Approved
Last Updated: 14 Oct 2019 06:06 by ADMIN

Please refer to the following code snippet demonstrating how the comparer can be applied:

        public RadForm1()
        {
            InitializeComponent();
            this.radGridView1.EnableFiltering = true;
            this.radGridView1.ShowHeaderCellButtons = true;
            this.radGridView1.FilterPopupInitialized += radGridView1_FilterPopupInitialized; 
        }

        private void radGridView1_FilterPopupRequired(object sender, FilterPopupRequiredEventArgs e)
        {
            RadListFilterPopup popup = e.FilterPopup as RadListFilterPopup;
            if (popup != null)
            { 
                popup.MenuTreeElement.TreeView.TreeViewElement.Comparer = new MyComparer(popup.MenuTreeElement.TreeView.TreeViewElement);
            }
        }

        class MyComparer : TreeNodeComparer
        {
            public MyComparer(RadTreeViewElement treeView)
                : base(treeView)
            {
            }
            public override int Compare(RadTreeNode x, RadTreeNode y)
            {
                if (this.TreeViewElement.SortOrder == SortOrder.Descending)
                {
                    return x.Text.CompareTo(y.Text);
                }
                return x.Text.CompareTo(y.Text) * -1;
            }
        }

Approved
Last Updated: 04 Oct 2019 10:04 by ADMIN

I am currently working in Telerik v2019.3.917 and .Net 4.5.2. I have multiple theme's setup for a local application for my users but I am seeing something odd with the Telerik.WinControls.Themes.HighContrastBlack theme. It appears that I am unable to select more than one cell in this theme. My grid has multiselect as true and SelectionMode as CellSelect. I have tried holding ctrl and clicking cells, clicking the row header, holding the mouse down and dragging, and using Ctrl+A but none of these select more than one cell.

I am setting the application theme on launch:

var _t = new Telerik.WinControls.Themes.HighContrastBlackTheme();
ThemeResolutionService.ApplicationThemeName = "HighContrastBlack";

 

Themes that work: All Fluents, All Material, All VS.

Is this a bug or am I missing something?

Approved
Last Updated: 23 Aug 2019 05:43 by ADMIN

Hi,

 

I am working with the RadGridView in my c# winform application. I am using the custom font ("Font Awesome 5 Free Solid") for the RadGridView using the "CellFormatting" event to view the icons along with the text. Here i am able to see the proper icons with text but when i open the filter menu to filter out the rows, i am unable to see the icons (icons shown as the box) as in filterbox we don't have any custom font

I tried to working out the properties of the RadTreeNodeCollection but here we dont have any Custom font property for the same. 

i want to show the text as it is in the filterbox along with the text and the icon.

so can you suggest what i can do to view the icons in the filterbox?

Check the attachment for reference.

 

Approved
Last Updated: 14 Aug 2019 07:25 by ADMIN
Created by: Tel
Comments: 1
Category: GridView
Type: Feature Request
1
Hello, i am using the GridViewSpreadStreamExport to export a gridview with parent and child rows.
Everithing works fine but is it possible to set the parent row to collapsed, if there are child rows?
Approved
Last Updated: 02 Aug 2019 14:04 by ADMIN
Created by: Roger
Comments: 1
Category: GridView
Type: Feature Request
0

I might be missing something, but I have Hyperlinks in a column in my RadDatGridView.

 

I tried searching for a Support document explaining this, but didn't find any.

 

When the grid is exported to excel all data is coming across, but the column with hyperlink is not

a hyperlink in Excel.

 

Below is sample of the code used to make the "HyperLink" column in my grid.

                radGridView1.DataSource = dtResults;
                radGridView1.Columns.Remove("Path");
                GridViewHyperlinkColumn col = new GridViewHyperlinkColumn();
                radGridView1.Columns.Insert(5, col);
                col.Width = 200;
                col.FieldName = "Path";
                col.HeaderText = "Path";
                col.Name = "Path";

 

Coded used to do the Export....

               GridViewSpreadExport spreadExporter = new GridViewSpreadExport(this.radGridView1);
                spreadExporter.ExportVisualSettings = true;
                SpreadExportRenderer exportRenderer = new SpreadExportRenderer();

                spreadExporter.RunExport(filename, exportRenderer);

 

Thanks.

 

Roger

Approved
Last Updated: 18 Jul 2019 11:45 by ADMIN

Hello,

In our Environment it's not possible to assign a GroupComparer to another GridView template then MasterTemplate. The GroupComparer property is always null after assignment.

It's possible to assign our custom comparer to the MasterTemplate and it will be triggered, but not in another template then MasterTemplate.

Best regards.

Tassilo Koller | Dipl. Informatiker (FH) | IT-Softwareentwicklung

[T] +49 (0)8233 381 383

[E] Tassilo.Koller@forum-media.com | [W] www.forum-verlag.com

FORUM MEDIA GROUP GMBH| Mandichostraße 18 | 86504 Merching | [T] +49 (0)8233 381-0 | [F] + 49 (0)8233 381-222 | [W] www.forum-media.com| Sitz der Gesellschaft: Merching | Register: AG Augsburg HRB 11537 | Geschäftsführer: Magdalena Balanicka, Norbert Bietsch, Roland Hradek, Mihaela Mravlje | Beirat: Ronald Herkert (Vorsitzender)

Elektronische Rechnungen bitte an folgende Adresse senden: invoice@forum-media.com

Approved
Last Updated: 27 Jun 2019 09:53 by ADMIN
Add a new DeferredFilter property on RadGridView level which controls whether the filtering logic will be immediately preformed on each key stroke or only by pressing Enter.
Approved
Last Updated: 19 Jun 2019 09:46 by ADMIN
Created by: Dimitri
Comments: 3
Category: GridView
Type: Bug Report
1

In my gridview need support of different heights of rows. I solved it with the autosize property.

But now I have a side action that the header row and filter row also react to the autosize property.

Attached you can see this behaviour...

Here my code:

Grid.MasterView.TableFilteringRow.MinHeight = 40
Grid.AutoSizeRows = True

Is there a chance to separate data rows from filter and header row?

 

Regards,

Dimitri

Approved
Last Updated: 06 Jun 2019 11:21 by ADMIN
Created by: Radu
Comments: 1
Category: GridView
Type: Bug Report
0

GridView is not correctly drawn if it's not populated and the theme is set to "TelerikMetro" or "TelerikMetroBlue" (the bottom line is missing). 

Steps to reproduce the behavior: create a RadForm, add a RadGridView to it and set the theme to "TelerikMetro" or "TelerikMetroBlue" by using ThemeResolutionService.ApplicationThemeName.

Approved
Last Updated: 24 May 2019 04:56 by ADMIN
The decimal separator is removed when exporting with German culture on Windows Server 2012
Approved
Last Updated: 14 May 2019 12:56 by ADMIN
============================
Attached files (in Grid.zip)
============================
- SQL Server 2014 Express - Create DB.sql                 - Create the database Telerik
- SQL Server 2014 Express - Create tables.sql             - Create tables and insert test data
- Database relations.PNG                                           - Graphical view from Visual Studio
- Error messages when trying to open Property Builder.PNG

============================  
How to reproduce the problem
============================
- Create the database and tables (including data) with attached sql files
- Create a WinForms application with an empty RadForm
- Add a new data source to the project and select the created Telerik DB with all tables
- Add a RadGridView to the form
- Create an event handler for the form Load event handler
- Add a TelerikDataSet to the form
- Add an ObjectTableAdapter to the form
- Fill the created adapter from table Object in the form Load event handler
- Add a binding source to the form and set data source to the data set and the member to table Object
- Select radGridView1 and set data source to the created binding source object. Data member is left empty.
- Open Property Builder and press the Build button and create details views
- Run project. Everything looks ok.
- Stop running.
- Select radGridView1 and try to open Property Builder. An error message is generated (see attached file Error messages...
- Save changes and exit studio. Studio is hanging and the process must be kiled.


Approved
Last Updated: 13 May 2019 11:54 by ADMIN
Created by: Roman
Comments: 5
Category: GridView
Type: Bug Report
2

Hello,

I am having issues with DateTime editor in the grid. We have custom date/time format for our dates - "HH:mm:ss dd-MMM-yyyy" and the datetime editor is set to free form date time with this mask. When user typed a value in the editor it is passed to FreeFormDateTimeProvider.Validate method, which calls DateInput.ParseDate. DateTimeLexer splits this kind of values just fine, but obviously time related tokens comes first and then the date related tokens.

Unfortunately DateTimeParser.Parse method is made the way that it parse date at first and then time from the tokens list. In my case this means time value is parsed and the date value is dropped to default. Why didn't you check that if after ParseDate and ParseTime calls the date portion is null but there are still remaining tokens in the list, so you may call ParseDate one more time?

Do you have any suggestion how could I resolve this issue? Everything related to date time parsing is not extendable at all, starting from DateInput, most of the classes and methods are not public and even some public methods are not virtual. Can I have the Telerik free form date time typing capabilities in the editor but still have time part before date part?

Approved
Last Updated: 29 Mar 2019 13:48 by ADMIN

How can I enter the Value "" (empty string) in the traditional filter system (not Excel like filter).

The grid does not seem to accept an empty string as an argument to "Equals" through the UI.

Ideally I would like to extend the standard filter menu in traditional filtering (and the filter operator drop down in custom filtering dialog) to contain operators "Is Empty" "Is Not Empty" and "Is Null Or Empty", "Is Not Null And Not Empty"

Regards

Erwin

Approved
Last Updated: 19 Mar 2019 07:32 by ADMIN

To reproduce: 

- Add items with the same display member open the drop-down and select the second.

- Select another control on the form and then reopen the popup.

- The first item is selected.

Workaround: 

class MyMultiColumnComboBox : RadMultiColumnComboBox
{
    protected override void OnLostFocus(EventArgs e)
    {
        if (this.DropDownStyle == Telerik.WinControls.RadDropDownStyle.DropDownList)
        {
            return;
        }
        base.OnLostFocus(e);
    }
}

Approved
Last Updated: 24 Jan 2019 14:58 by Eric Moreau

Hi

I just found a strange issue using the latest bits of the Telerik RadGridView. 

I have a grid that contains ColumnGroupsViewDefinition. Inside one of the group, one of the column is a GridViewComboBoxColumn.

The grid shows correctly on the screen.

If I try to export it using GridViewSpreadExport, I get an exception saying "input string was not in a correct format".

The export works fine if:

-I don't have groups

-I export to HTML using ExportToHTML

-I export to HTML using ExportToCSV

 

Any help please?

Approved
Last Updated: 16 May 2019 05:56 by ADMIN
Created by: Shawn
Comments: 2
Category: GridView
Type: Feature Request
0

I have the following logic for my View, which has a RadGridView control (add to form at design-time).

GUI is a lightweight view, Controller does the heavy lifting. That part is all good.

 

However setting the column name and column autosize stuff is a little more "over-complicated" than I'd wish to see. It all works though.

Would be nice to have a "GridViewTextBoxColumnAttribute" as per below, for properties on Custom datasource objects to achieve the same thing in a more concise way.

Or am I missing something and there is a much easier way to do what I want?

 

I have a number of datasource classes: MyObject, MyCar, MyDog, MyWhatever... that ALL have different property names and datatypes, but may or may-not have the same column name or MasterTemplate style.

 

Also BestFitColumns is a function of the MasterTemplate, would be nice if it were a property for consistency sake (call to internal function encapsulated in the Set etc), as from a Telerik user's perspective it's just an enum. Then it would be setable in the SmartTag window as well, as functions can't be assigned to.

 

  public partial class RadForm1 : Telerik.WinControls.UI.RadForm, IView
    {
        public RadForm1)
        {
            InitializeComponent();
        }

        private void RadForm1_Load(object sender, EventArgs e)
        {
            var x = new Controller();
            x.SetTemplate(this);           
        }

        public Telerik.WinControls.UI.RadGridView RadGridView()
        {
            return this.radGridView1;
        }
    }

    public class Controller
    {
        public void SetTemplate(IView view)
        {
            var View_RadGrid = view.RadGridView();
            View_RadGrid.MasterTemplate.AutoGenerateColumns = false;
            View_RadGrid.MasterTemplate.AutoGenerateHierarchy = false;
            View_RadGrid.MasterTemplate.AllowColumnResize = false;
            View_RadGrid.MasterTemplate.BestFitColumns(Telerik.WinControls.UI.BestFitColumnMode.AllCells);

            var cols = new List<Telerik.WinControls.UI.GridViewDataColumn>()
            {
                new Telerik.WinControls.UI.GridViewTextBoxColumn("DisplayName1"),
                new Telerik.WinControls.UI.GridViewTextBoxColumn("DisplayName2")
            };
            View_RadGrid.MasterTemplate.Columns.AddRange(cols.ToArray());

            View_RadGrid.DataSource = new List<MyObject>() 
            { 
                new MyObject() { DisplayName1 = "1", DisplayName2 = "2" }, 
                new MyObject() { DisplayName1 = "3", DisplayName2 = "4" } 
            };
        }

        private class MyObject
        {
            [GridViewTextBoxColumnAttribute("DisplayName1", BestFitColumn = Telerik.WinControls.UI.BestFitColumnMode.AllCells, AllowColumnResize = false)]
            public string DisplayName1 { get; set; }

            [GridViewTextBoxColumnAttribute("DisplayName2", BestFitColumn = Telerik.WinControls.UI.BestFitColumnMode.AllCells, AllowColumnResize = false)]
            public string DisplayName2 { get; set; }
        }
    }

    public interface IView
    {
        Telerik.WinControls.UI.RadGridView RadGridView();
    }

    [System.AttributeUsage(System.AttributeTargets.Property)]
    public class GridViewTextBoxColumnAttribute : System.Attribute
    {
        private string FieldName;
        public Telerik.WinControls.UI.BestFitColumnMode BestFitColumn;
        public bool AllowColumnResize;

        public GridViewTextBoxColumnAttribute(string fieldName)
        {
            this.FieldName = fieldName;
        }
    }

Approved
Last Updated: 16 May 2019 05:17 by ADMIN
To reproduce: please run the attached sample project and follow the steps illustrated in the attached gif file:

Scrolling to a newly added row does not work when inner templates are visible.

Add data to the inner templates of several rows near the bottom using the button.
Expand these inner templates so they are all visible.
Scroll back up to the top.
Add a new item to the outer grid normally.
The table will jump to where it things the new item is but will fall short, instead scrolling to a location in one of the inner templates.
Workaround:

        private void RadGridView1_UserAddedRow(object sender, GridViewRowEventArgs e)
        {
            foreach (GridViewRowInfo    row in this.radGridView1.Rows)
            {
                if (row.IsExpanded)
                {
                    row.IsExpanded = false;
                    row.IsExpanded = true;
                }
            }
        }
Approved
Last Updated: 16 May 2019 05:10 by ADMIN
How to reproduce:

1. Click DrugName Filter Icon.
2. Uncheck Combivent
3. OK
4. Click name Filter Icon
5. Uncheck Christoff
6. OK
7. Click DrugName Filter Icon
8. Uncheck Dilantin
9. OK

In this scenario the grid should display only 2 rows but it displays 3.

public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
    public List<Drug> DrugList { get; set; }

    public RadForm1()
    {
        InitializeComponent();
        DrugList = new List<Drug>();
        LoadDrugList();
        radGridView1.DataSource = DrugList;
        radGridView1.EnableFiltering = true;

        this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
        this.radGridView1.MultiSelect = true;
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        radGridView1.MasterTemplate.ShowFilteringRow = false;
        radGridView1.MasterTemplate.ShowHeaderCellButtons = true;
    }

    void LoadDrugList()
    {
        DrugList.Add(new Drug { Dosage = 25, DrugName = "Indocin", Name = "David"});
        DrugList.Add(new Drug { Dosage = 50, DrugName = "Enebrel", Name = "Sam" });
        DrugList.Add(new Drug { Dosage = 10, DrugName = "Hydralazine", Name = "Christoff"});
        DrugList.Add(new Drug { Dosage = 21, DrugName = "Combivent", Name = "Janet"});
        DrugList.Add(new Drug { Dosage = 100, DrugName = "Dilantin", Name = "Melanie"});
    }

}

Workaround: use a custom filter popup
public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
    public List<Drug> DrugList { get; set; }

    public RadForm1()
    {
        InitializeComponent();
        DrugList = new List<Drug>();
        LoadDrugList();
        radGridView1.DataSource = DrugList;
        radGridView1.EnableFiltering = true;

        this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
        this.radGridView1.MultiSelect = true;

        this.radGridView1.FilterPopupRequired += RadGridView1_FilterPopupRequired;
    }

    private void RadGridView1_FilterPopupRequired(object sender, FilterPopupRequiredEventArgs e)
    {
        e.FilterPopup = new CustomRadListFilterPopup(e.Column);
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        radGridView1.MasterTemplate.ShowFilteringRow = false;
        radGridView1.MasterTemplate.ShowHeaderCellButtons = true;
    }

    void LoadDrugList()
    {
        DrugList.Add(new Drug { Dosage = 25, DrugName = "Indocin", Name = "David"});
        DrugList.Add(new Drug { Dosage = 50, DrugName = "Enebrel", Name = "Sam" });
        DrugList.Add(new Drug { Dosage = 10, DrugName = "Hydralazine", Name = "Christoff"});
        DrugList.Add(new Drug { Dosage = 21, DrugName = "Combivent", Name = "Janet"});
        DrugList.Add(new Drug { Dosage = 100, DrugName = "Dilantin", Name = "Melanie"});
    }

}

public class CustomRadListFilterPopup : RadListFilterPopup
{
    public CustomRadListFilterPopup(GridViewDataColumn dataColumn) 
        : base(dataColumn)
    {
    }

    protected override void OnButtonOkClick(EventArgs e)
    {
        FilterMenuTreeItem treeMenuItem = this.Items.FirstOrDefault(i => i is FilterMenuTreeItem) as FilterMenuTreeItem;
        if (treeMenuItem == null)
        {
            base.OnButtonOkClick(e);
        }

        FilterMenuTreeElement listFilterElement = treeMenuItem.TreeElement;

        FilterOperator filterOperator = FilterOperator.IsEqualTo;

        switch (listFilterElement.SelectedMode)
        {
            case ListFilterSelectedMode.All:
                filterOperator = FilterOperator.None;
                break;
            case ListFilterSelectedMode.Null:
                filterOperator = FilterOperator.IsNull;
                break;
            case ListFilterSelectedMode.NotNull:
                filterOperator = FilterOperator.IsNotNull;
                break;
        }

        if (filterOperator != FilterOperator.IsEqualTo)
        {
            SetFilterOperator(filterOperator);
            this.ClosePopup(RadPopupCloseReason.CloseCalled);
        }
        else
        {
            CompositeFilterDescriptor compositeFilterDescriptor = new CompositeFilterDescriptor();
            compositeFilterDescriptor.PropertyName = this.DataColumn.Name;
            RadListFilterDistinctValuesTable distinctValues = this.GetDistinctValuesTable();
            string blanksKey = RadGridLocalizationProvider.CurrentProvider.GetLocalizedString(RadGridStringId.FilterMenuBlanks);
            bool blanks = listFilterElement.SelectedValues.Contains(blanksKey);
            compositeFilterDescriptor.LogicalOperator = FilterLogicalOperator.And;

            foreach (DictionaryEntry entry in distinctValues)
            {
                object key = entry.Key;

                if (string.IsNullOrEmpty(Convert.ToString(key)))
                {
                    key = blanksKey;
                }

                if (this.DataColumn is GridViewDateTimeColumn || this.DataColumn.DataType == typeof(DateTime) || this.DataColumn.DataType == typeof(DateTime?))
                {
                    DateTime dateTime;

                    if (DateTime.TryParse(key.ToString(), out dateTime))
                    {
                        object dataKey;
                        if (RadDataConverter.Instance.TryFormat(treeMenuItem.TreeElement.GroupedDateValues ? dateTime.Date : dateTime, typeof(string), this.DataColumn, out dataKey) == null)
                        {
                            key = dataKey;
                        }
                    }
                }

                if (!listFilterElement.SelectedValues.Contains(key))
                {
                    foreach (object value in (ArrayList)entry.Value)
                    {
                        FilterDescriptor descriptor;
                        if (value == DBNull.Value)
                        {
                            descriptor = new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, null);
                        }
                        else if (this.DataColumn is GridViewDateTimeColumn || this.DataColumn.DataType == typeof(DateTime) || this.DataColumn.DataType == typeof(DateTime?))
                        {
                            descriptor = new DateFilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, (DateTime?)value, false);
                        }
                        else
                        {
                            descriptor = new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, value);
                        }

                        compositeFilterDescriptor.FilterDescriptors.Add(descriptor);
                    }
                }
            }

            if (this.DataColumn.FilterDescriptor != null)
            {
                CompositeFilterDescriptor compositeFilter = this.DataColumn.FilterDescriptor as CompositeFilterDescriptor;
                if (compositeFilter != null)
                {
                    foreach (var item in compositeFilter.FilterDescriptors)
                    {
                        if (listFilterElement.SelectedValues.Contains(item.Value))
                        {
                            continue;
                        }

                        FilterDescriptor descriptor = new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, item.Value);
                        compositeFilterDescriptor.FilterDescriptors.Add(descriptor);
                    }
                }
                else if(!listFilterElement.SelectedValues.Contains(this.DataColumn.FilterDescriptor.Value))
                {
                    FilterDescriptor descriptor = new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, this.DataColumn.FilterDescriptor.Value);
                    compositeFilterDescriptor.FilterDescriptors.Add(descriptor);
                }
            }
            this.FilterDescriptor = compositeFilterDescriptor;

            OnFilterConfirmed();
        }
    }
}
1 2 3 4 5 6