Telerik Forums
UI for WinForms Forum
5 answers
172 views

Hi.

 

I'm facing and issue with displaying hierarchical data (self-referencing) in grid when missing parent items in data source - only part of data is displayed.

 

1. Add grid to form

1.var grid = new RadGridView {Dock = DockStyle.Fill};
2.this.Controls.Add(grid);
3.grid.Columns.Add("cName","Name","Name"); //Dummy column displaying Name

 

2. Setup self-referencing

1.var col1 = new GridViewTextBoxColumn("hiddenColumnId", "Id");
2.var col2 = new GridViewTextBoxColumn("hiddenColumnParentId", "ParentId");
3.grid.MasterTemplate.Columns.Add(col1);
4.grid.MasterTemplate.Columns.Add(col2);
5.grid.Columns["hiddenColumnId"].IsVisible = false;
6.grid.Columns["hiddenColumnParentId"].IsVisible = false;
7.grid.Relations.AddSelfReference(grid.MasterTemplate, "hiddenColumnId", "hiddenColumnParentId");

 

3. Create dummy data type

01.class Item
02.{
03.    public Item(int id, string name, int? parentId = null)
04.    {
05.        Id = id;
06.        Name = name;
07.        ParentId = parentId;
08.    }
09. 
10.    public int Id { get; set; }
11.    public string Name { get; set; }
12.    public int? ParentId { get; set; }
13.}

 

4. Add new data source

01.var items = new List<Item>
02.{
03.    new Item(1,"1"),
04.    new Item(2,"1.1",1),
05.    new Item(3,"1.2",1),
06.    new Item(7,"1.2.1",3),
07.    new Item(4,"2"),
08.    new Item(5,"2.1",4),
09.    new Item(6,"2.2",4)
10.};
11.grid.DataSource = items;

 

And as expected a correct tree structure is displayed

1.1
2.-1.1
3.-1.2
4.--1.2.1
5.2
6.-2.1
7.-2.2

 

 

However in my case due to busines logic I have only a subset of data - all except item "1" and "2".

Instead of ex

1.1.1
2.1.2
3.-1.2.1
4.2.1
5.2.2

 

I can see only children of first missing parent item. Although the number of rows is matching correct total number of item to be displayed (5) only part of items are visible (3).

1.1.1
2.1.2
3.-1.2.1

 

 

As a workaroud I can modify data source and remove parent assignement from objects if parent is missing in data source either on data preparation or DataBindingComplete event.

01.private void Grid_DataBindingComplete(object sender, GridViewBindingCompleteEventArgs e)
02. {
03.     var grid = sender as RadGridView;
04.      
05.    // Get existing items
06.     var ids = new List<object>();
07.     foreach (var id in grid.Columns["hiddenColumnId"].DistinctValues)
08.     {
09.         ids.Add(id);
10.     }
11. 
12.    // Remove missing parents
13.    foreach (var row in grid.Rows)
14.    {
15.        var parentId = row.Cells["hiddenColumnParentId"].Value;
16.        if (!ids.Contains(parentId))
17.            row.Cells["hiddenColumnParentId"].Value = null;
18.    }
19.}

 

 

However this solution is not suitable, because it is modifying data providing inconsistant state - using that data in code I may falsly assume that the item does not have a parent while it has.

 

Any ideas how to solve this issue?

 

Regargs
Greg

Hristo
Telerik team
 answered on 30 May 2019
0 answers
52 views
Hello guys,

Another question about the "NewRow" of the radgridview.
In my application, I manage themes. Can you tell me if is it possible to retrieve the color of the selected row in the radgridview or the forecolor of the NewRow ?
I would like to retrieve this main color to use it in part of another control.

Thank you
Best regards
Fabrizio
Top achievements
Rank 1
 asked on 28 May 2019
2 answers
418 views

Hello,

In the chart legend, I would like to show a line next to an item instead of a square.  For the ChartView for Winforms I have been unable to find any information on the ability to change the shape.  Is that possible?

 

As I work around, I had an idea to set the top and bottom border as white and increase the border size thinking that I could make the square look like a line I tried that with the following code, but it seems to have no affect. The default black border is sown instead.

LegendItem item = new LegendItem();
item.Element.BackColor = Color.Blue;
item.Element.BorderBottomColor = Color.White;
item.Element.BorderTopColor = Color.White;
item.Element.BorderTopWidth = 3;
item.Element.BorderBottomWidth = 3;
this.mainChart.ChartElement.LegendElement.Items.Add(item);

 

I am able to change the entire border using the following code. It displays a smaller square, which is kind of acceptable but there seems to be a shadow still visible.

LegendItem item = new LegendItem();
item.Element.BackColor = Color.Blue;
item.Element.BorderColor = Color.White;
item.Element.BorderWidth = 3;
this.mainChart.ChartElement.LegendElement.Items.Add(item);

 

Any ideas on how to achieve my goal?

 

Chris

Chris Ward
Top achievements
Rank 1
 answered on 28 May 2019
4 answers
3.2K+ views

Hi,

I'm working with the RadGridView component directly without use a model binding.

I would like to add dynamically a new Row at a position in my grid view after an other row by using :

gridView.Rows.Insert(row.Index + 1, newRow);

It's working well if I'm not using a grouping. But when I add the grouping :

GroupDescriptor descriptor = new GroupDescriptor();
descriptor.GroupNames.Add("NomGroupe", ListSortDirection.Ascending);
gridView.GroupDescriptors.Add(descriptor);

It's not work because the Index is ordered by the groupe.

How How can I do?

Thanks for your help,

Simon

Dimitar
Telerik team
 answered on 28 May 2019
2 answers
230 views

Hi everybody, I'm evaluating RadBarcode for printing barcodes in thermal printers. My printers have a resolution of 203 dpi in both horizontal and vertical directions. I'm trying to generate an image of the barcode (EAN13) and sending to printer:

 

        public DrawBarcode(Point Location, Size Size, string valor): base(Location)
        {
            this.Valor = valor;
            bc = new RadBarcode();
            bc.Value = valor;
            
            var EAN13 = new Telerik.WinControls.UI.Barcode.Symbology.EAN13();
            EAN13.ShowText = true;

            bc.Symbology = EAN13;
            EAN13.Stretch = true;

            int n = 50;
            while (true)
            {
                try
                {
                    img = bc.ExportToImage(2*n, n);
                    this.size = img.Size;
                    return;
                }
                catch (Exception) { n += 10; }
            }
        }

 

        public override void Draw(Graphics g)
        {
            base.Draw(g);
            g.DrawImage(img, 0, 0);
        }

I have a base class for controling Drag, zoom and rotation but it is not important in this scenario. When I send the image to screen, text is rendered perfectly but when I send the image to the printer, text is not redeable. Is it any why to specify resolution in ExortToImage or any other why to change generated image resolution?

 

 

Dess | Tech Support Engineer, Principal
Telerik team
 answered on 28 May 2019
1 answer
162 views

I'm trying to use the built-in Excel function COUNTIF on a cell range. How do you return the integer result of that value? Do I have to specifically set the formula to a cell first and get the result that way? Or can I somehow just get the result without actually having to write the formula to a cell? 

 

Thank you in advance.

Tanya
Telerik team
 answered on 27 May 2019
3 answers
282 views

Good day,

I want to get the zoom back to the original zoom and position after the radDiagram being zoomed.

Sometimes it is difficult to keep the zoom in good position. Thus I would like to put it again in the default zoom and point when pushing a button.

The RadDiagram making code, creating the RadDiagram:

    Telerik.Windows.Diagrams.Core.DiagramConstants.MinimumZoom = 0.1
    Telerik.Windows.Diagrams.Core.DiagramConstants.MaximumZoom = 10
    MyRadDiagram.Zoom = 0.1
    MyRadDiagram.IsSettingsPaneEnabled = False
    MyRadDiagram.DiagramElement.IsBackgroundSurfaceVisible = False
 
    MyRadDiagram.BackgroundGrid.Visibility = False
    MyRadDiagram.BackgroundPageGrid.Visibility = Telerik.WinControls.ElementVisibility.Hidden
    MyRadDiagram.BackgroundImageLayout = ImageLayout.None
    MyRadDiagram.BackgroundImage = Nothing
    posCentral = MyRadDiagram.Position

The code I use to get back to original zoom:

Private posCenter As New Telerik.Windows.Diagrams.Core.Point(0, 0)
Private Sub bCenterZoom_Click(sender As Object, e As EventArgs) Handles bCenterZoom.Click
    loading = True
    MyRadDiagram.Position = posCentral
    MyRadDiagram.Zoom = 0.1
    loading = False
End Sub

 

 

Iñaki
Top achievements
Rank 1
 answered on 27 May 2019
1 answer
182 views
Hello everybody,

Can you tell me if exists the ActionOnLostFocus property in Winforms like Wpf ?

In fact, when I editing a cell I validating it in the CellValidating event or RowValidating.
But if during the editing I click on other control form's, the cell is not commited and the CellValidating event not fire.

How can I manage this situation appropriately?

Thank you
Best regards
Dess | Tech Support Engineer, Principal
Telerik team
 answered on 27 May 2019
1 answer
110 views

Greetings,

Is it possible to edit UI elements of  of controls  programmatically ?

For instance, I want to change header font of a Radgroupbox.

I normally should open its smartTag and change the font within root elements. But how to do it programmatically ?

 

Dess | Tech Support Engineer, Principal
Telerik team
 answered on 27 May 2019
3 answers
184 views
I have a chartview with three line series representing measurement values and two more displaying the upper an lower limit of the values.Is it possible to show the trackball only on the three measurement series. 
Dimitar
Telerik team
 answered on 27 May 2019
Narrow your results
Selected tags
Tags
GridView
General Discussions
Scheduler and Reminder
Treeview
Dock
RibbonBar
Themes and Visual Style Builder
ChartView
Calendar, DateTimePicker, TimePicker and Clock
DropDownList
Buttons, RadioButton, CheckBox, etc
ListView
ComboBox and ListBox (obsolete as of Q2 2010)
Form
Chart (obsolete as of Q1 2013)
PageView
MultiColumn ComboBox
TextBox
RichTextEditor
PropertyGrid
Menu
RichTextBox (obsolete as of Q3 2014 SP1)
Panelbar (obsolete as of Q2 2010)
PivotGrid and PivotFieldList
Tabstrip (obsolete as of Q2 2010)
MaskedEditBox
CommandBar
PdfViewer and PdfViewerNavigator
ListControl
Carousel
GanttView
Diagram, DiagramRibbonBar, DiagramToolBox
Panorama
New Product Suggestions
VirtualGrid
Toolstrip (obsolete as of Q3 2010)
AutoCompleteBox
Label
Spreadsheet
ContextMenu
Panel
Visual Studio Extensions
TitleBar
Documentation
SplitContainer
Map
DesktopAlert
CheckedDropDownList
ProgressBar
TrackBar
MessageBox
Rotator
SpinEditor
CheckedListBox
StatusStrip
LayoutControl
SyntaxEditor
Wizard
ShapedForm
TextBoxControl
CollapsiblePanel
Conversational UI, Chat
DateTimePicker
TabbedForm
CAB Enabling Kit
GroupBox
WaitingBar
DataEntry
ScrollablePanel
ScrollBar
ImageEditor
Tools - VSB, Control Spy, Shape Editor
BrowseEditor
DataFilter
FileDialogs
ColorDialog
Gauges (RadialGauge, LinearGauge, BulletGraph)
ApplicationMenu
RangeSelector
CardView
WebCam
BindingNavigator
Styling
Barcode
PopupEditor
RibbonForm
TaskBoard
Callout
NavigationView
ColorBox
PictureBox
FilterView
Accessibility
VirtualKeyboard
DataLayout
Licensing
ToastNotificationManager
ValidationProvider
CalculatorDropDown
Localization
TimePicker
BreadCrumb
ButtonTextBox
FontDropDownList
BarcodeView
Security
LocalizationProvider
Dictionary
SplashScreen
Overlay
Flyout
Separator
SparkLine
TreeMap
StepProgressBar
ToolbarForm
NotifyIcon
DateOnlyPicker
AI Coding Assistant
Rating
TimeSpanPicker
Calculator
OfficeNavigationBar
TaskbarButton
HeatMap
SlideView
PipsPager
AIPrompt
TaskDialog
TimeOnlyPicker
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?