Telerik Forums
UI for WPF Forum
0 answers
197 views
In my project I have RadGridView with GridViewDataColumns. Some of the rows are connected with each other. For some of them default filtering using FilteringDropDown is enough, since they have the same value in filtered column. But there are also columns where the values for interconnected rows are different and if we filter it by deafault we lose that connection and we only present row with that value and the connected row is lost. Is there possibility to override some function and perform the custom filtering there. If yes how to do that?
Or do I need some new control there based on the deafault filtering popup to perform filtering there?
Szymon
Top achievements
Rank 1
 asked on 15 Jun 2023
0 answers
143 views

Hi I have two RadGridView , first one consists of basic controls it works well.

However, the other thing is that the page is created, but the controls are not displayed at all.

the only difference is that the second radgridview using CellTemplate.


<telerik:GridViewDataColumn  HeaderCellStyle="{StaticResource CustomGridViewHeaderCellStyle}"  Header="{Binding TimeFirst}" Width="0.8*" HeaderTextAlignment="Center"  ColumnGroupName="L1CODE">
                            <telerik:GridViewDataColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <telerik:RadProgressBar  Height="20"  Minimum="0"  Maximum="3600" Value="{Binding L1CodeBeforeCnt3}" Style="{StaticResource l1code3progressbar}">
                                        </telerik:RadProgressBar>
                                        <TextBlock Text="{Binding L1CodeBeforeCnt3}" Margin="5 0">
                                        </TextBlock>
                                    </Grid>
                                </DataTemplate>
                            </telerik:GridViewDataColumn.CellTemplate>
                        </telerik:GridViewDataColumn>

 

and i used radpager like this.

 <telerik:RadGridView 
                            ItemsSource="{Binding PagedSource, ElementName=radDataPager}"
>


   <telerik:RadDataPager x:Name="radDataPager" 
                          Source="{Binding SignalCntData}" 
                          PageSize="30" 
                          />

this code works well in consists of basic controls.

is it a problem with styling the progressbar? but without pager, just radgridview, there are no problem..

But I must display more than 150 rows, I must use RadPager somebody help..

 

 

 

 

 


Jiwoo
Top achievements
Rank 1
 asked on 15 Jun 2023
0 answers
183 views

Hello,

I created an attached property that scrolls into the selected item when the SelectedItem changed (using the public method of the RadGridView).

This behavior was added because the selected item may be changed from other view. The RadGridView multi selection is enabled.

I noticed that during grouping, the scrolling into the selected item works, but the row might be collpased when the group IsExpanded property is false.

There is an easy way to expand the group?

I want to detect the group by O(1) and then update the IsExpanded property to True.

I am wondering what will happend if there are many groups? should I expand all of them or only the last one ?

I will be glad to know the easiest way for this.

* The performance is extremelly important so we should take into consideration that maybe the user selects a lot of items (let's say 250 out of 10000) so the SelectedItem will change a lot.

alex
Top achievements
Rank 2
Bronze
Iron
Iron
 asked on 14 Jun 2023
1 answer
95 views

Hello,

In the RichTextBox, in the Table, what is the best way to check that TableRow.Height is changing?

How to prevent the change or set specific value?

Thank you.

 

Dimitar
Telerik team
 answered on 14 Jun 2023
1 answer
214 views

I want to create a RadFixedDocument with a table (see screenshot). Thereby the table is created dynamically:


Table headerTable = new Table();
            Telerik.Windows.Documents.Fixed.Model.Editing.Border headerBorder = new Telerik.Windows.Documents.Fixed.Model.Editing.Border(1, BorderStyle.Single, new RgbColor(217, 217, 217));
            headerTable.DefaultCellProperties.Borders = new TableCellBorders(headerBorder, headerBorder, headerBorder, headerBorder);
            headerTable.DefaultCellProperties.Padding = new Thickness(5, 10, 5, 10);

            TableRow headerRow = headerTable.Rows.AddTableRow();

            TableCell vacationEntitlementHeaderCell = headerRow.Cells.AddTableCell();
            vacationEntitlementHeaderCell.PreferredWidth = _maxWidth-100;
            vacationEntitlementHeaderCell.Background = new RgbColor(217, 217, 217);

            Block vacationEntitlementText = vacationEntitlementHeaderCell.Blocks.AddBlock();
            SetTextProperties(vacationEntitlementText, new RgbColor(0, 0, 0), 12, new FontFamily("Verdana"), new RgbColor(217, 217, 217));
            vacationEntitlementText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Left;
            vacationEntitlementText.VerticalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.VerticalAlignment.Center;
            vacationEntitlementText.InsertText("Urlaubsanspruch: " + _localViewModel.Document.VacationEntitlement.ToString());

            TableCell vacationPlannedHeaderCell = headerRow.Cells.AddTableCell();
            vacationPlannedHeaderCell.PreferredWidth = _maxWidth-100;
            vacationPlannedHeaderCell.Background = new RgbColor(217, 217, 217);

            Block vacationPlannedText = vacationPlannedHeaderCell.Blocks.AddBlock();
            SetTextProperties(vacationPlannedText, new RgbColor(0, 0, 0), 12, new FontFamily("Verdana"), new RgbColor(217, 217, 217));
            vacationPlannedText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Left;
            vacationPlannedText.VerticalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.VerticalAlignment.Center;
            vacationPlannedText.InsertText("Geplant: " + _localViewModel.Document.VacationDays.ToString());

            TableCell vacationFreeHeaderCell = headerRow.Cells.AddTableCell();
            vacationFreeHeaderCell.PreferredWidth = _maxWidth-100;
            vacationFreeHeaderCell.Background = new RgbColor(217, 217, 217);

            Block vacationFreeText = vacationFreeHeaderCell.Blocks.AddBlock();
            SetTextProperties(vacationFreeText, new RgbColor(0, 0, 0), 12, new FontFamily("Verdana"), new RgbColor(217, 217, 217));
            vacationFreeText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Left;
            vacationFreeText.VerticalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.VerticalAlignment.Center;
            vacationFreeText.InsertText("Freie Urlaubstage: " + _localViewModel.Document.FreeVacationsDays.ToString());

            TableCell workTimeColorCell = headerRow.Cells.AddTableCell();
            workTimeColorCell.PreferredWidth = 150;
            workTimeColorCell.Background = new RgbColor(217, 217, 217);

            Block workTimeColorText = workTimeColorCell.Blocks.AddBlock();
            SetTextProperties(workTimeColorText, new RgbColor(85, 85, 85), 24, new FontFamily("Verdana"), new RgbColor(85, 85, 85));
            workTimeColorText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Left;
            workTimeColorText.VerticalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.VerticalAlignment.Center;
            workTimeColorText.InsertText(" ");

            TableCell WorkTimeHeaderCell = headerRow.Cells.AddTableCell();
            WorkTimeHeaderCell.PreferredWidth = _maxWidth;
            WorkTimeHeaderCell.Background = new RgbColor(217, 217, 217);

            Block workTimeText = WorkTimeHeaderCell.Blocks.AddBlock();
            SetTextProperties(workTimeText, new RgbColor(0,0,0), 12, new FontFamily("Verdana"), new RgbColor(217, 217, 217));
            workTimeText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Left;
            workTimeText.VerticalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.VerticalAlignment.Center;
            workTimeText.InsertText("Arbeitstage mit hinterlegter Sollarbeitszeit");

            _editor.Position.Translate(_defaultLeftIndent, 80);
            _editor.DrawBlock(headerTable, new Size(_maxWidth, double.PositiveInfinity));

            Table table = new Table();
            Telerik.Windows.Documents.Fixed.Model.Editing.Border border = new Telerik.Windows.Documents.Fixed.Model.Editing.Border(1, BorderStyle.Single, new RgbColor(204, 204, 204));
            table.DefaultCellProperties.Borders = new TableCellBorders(border, border, border, border);
            table.DefaultCellProperties.Padding = new Thickness(5, 10, 5, 10);

            TableRow valueHeaderRow = table.Rows.AddTableRow();
            TableCell monthCell = valueHeaderRow.Cells.AddTableCell();
            monthCell.PreferredWidth = 150;
            monthCell.Background = new RgbColor(217, 217, 217);

            Block month = monthCell.Blocks.AddBlock();
            SetTextProperties(month, new RgbColor(0, 0, 0), 12, new FontFamily("Verdana"), new RgbColor(217, 217, 217), true);
            month.InsertText("Monat");

            for (int i = 1; i < 32; i++)
            {
                TableCell dayCell = valueHeaderRow.Cells.AddTableCell();
                dayCell.PreferredWidth = 50;
                dayCell.Background = new RgbColor(217, 217, 217);

                Block day = dayCell.Blocks.AddBlock();
                SetTextProperties(day, new RgbColor(0, 0, 0), 12, new FontFamily("Verdana"), new RgbColor(217, 217, 217), true);
                day.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Center;
                day.InsertText(i.ToString());
            }

            foreach (var monthItem in _localViewModel.Document.Months)
            {
                TableRow monthRow = table.Rows.AddTableRow();
                TableRow appointmentRow = table.Rows.AddTableRow();
                
                TableCell monthHeaderCell = monthRow.Cells.AddTableCell();
                monthHeaderCell.PreferredWidth = 120;
                monthHeaderCell.Background = new RgbColor(217, 217, 217);
                monthHeaderCell.RowSpan = 2;

                Block monthName = monthHeaderCell.Blocks.AddBlock();
                SetTextProperties(monthName, new RgbColor(0, 0, 0), 12, new FontFamily("Verdana"), new RgbColor(217, 217, 217));
                monthName.VerticalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.VerticalAlignment.Center;
                monthName.InsertText(monthItem.Name);

                foreach (var dayItem in monthItem.Days)
                {
                    if (dayItem.Plan == 0)
                    {
                        RgbColor background = new RgbColor(255, 255, 255);
                        TableCell monthDayCell = monthRow.Cells.AddTableCell();
                        Block dayText = monthDayCell.Blocks.AddBlock();
                        monthDayCell.PreferredWidth = 50;

                        if (dayItem.Template == Templates.U)
                        {
                            background = new RgbColor(0, 153, 188);
                        }
                        monthDayCell.Background = background;

                        SetTextProperties(dayText, new RgbColor(0, 0, 0), 8, new FontFamily("Verdana"), background);
                        dayText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Center;
                        dayText.InsertText(dayItem.WeekdayStringShort.ToUpper());

                        TableCell appointmentDayCell = appointmentRow.Cells.AddTableCell();
                        //Block appointmentText = appointmentDayCell.Blocks.AddBlock();
                        appointmentDayCell.PreferredWidth = 50;
                        appointmentDayCell.Background = FormatAppointment(dayItem.Date);

                        //SetTextProperties(appointmentText, new RgbColor(0, 0, 0), 0, new FontFamily("Verdana"), new RgbColor(255, 255, 255));
                        //appointmentText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Center;
                        //appointmentText.InsertText(String.Empty);
                    }
                    else
                    {
                        TableCell monthDayCell = monthRow.Cells.AddTableCell();
                        RgbColor rgbColorBackground = new RgbColor(85, 85, 85);
                        RgbColor rgbColorForeground = new RgbColor(255, 255, 255);

                        monthDayCell.Background = rgbColorBackground;
                        Block dayText = monthDayCell.Blocks.AddBlock();
                        monthDayCell.PreferredWidth = 50;

                        SetTextProperties(dayText, rgbColorForeground, 8, new FontFamily("Verdana"), rgbColorBackground);
                        dayText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Center;
                        dayText.InsertText(dayItem.WeekdayStringShort.ToUpper());

                        TableCell appointmentDayCell = appointmentRow.Cells.AddTableCell();
                        //Block appointmentText = appointmentDayCell.Blocks.AddBlock();
                        appointmentDayCell.PreferredWidth = 50;
                        appointmentDayCell.Background = FormatAppointment(dayItem.Date);
                        
                        //SetTextProperties(appointmentText, new RgbColor(0, 0, 0), 0, new FontFamily("Verdana"), new RgbColor(255, 255, 255));
                        //appointmentText.HorizontalAlignment = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.HorizontalAlignment.Center;
                        //appointmentText.InsertText(String.Empty);
                    }
                }
            }
            
            _editor.Position.Translate(_defaultLeftIndent, 130);
            _editor.DrawBlock(table, new Size(_maxWidth, double.PositiveInfinity));
        }

How can I set the height of the empty row below each day?

Aleks
Telerik team
 answered on 12 Jun 2023
1 answer
148 views

Hello. I faced the problem when i am trying to get Route from BinRestMapProvider, using method CalculateRouteAsync, it returns status code 400 and message like this: "This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.","errorDetails":["One or more parameters are not valid.","waypoint: One or more locations specified in the waypoint parameter are invalid or require more information. : 42,6957539183824;23,3327663758679"],"resourceSets":[],"statusCode":400,"statusDescription":"Bad Request" "

I just followed the example at:
https://docs.telerik.com/devtools/wpf/controls/radmap/features/providers/bing-rest-map-provider/routing

I guess problem is in example 4 of this doc: "request.Waypoints.Add(point.ToString());"

I hope someone can help me with it.

Dmytro
Top achievements
Rank 1
Iron
 answered on 09 Jun 2023
1 answer
364 views

Does the vulnerability that was in your MOVEit software also exist in the Telerik software?

Is it currently safe to download software from your website?

Lance | Senior Manager Technical Support
Telerik team
 answered on 06 Jun 2023
1 answer
160 views

I want to encrypt a zip archive.


using (FileStream stream = File.Create(Filepath + Filename))
 {
     DefaultEncryptionSettings encryptionSettings = new DefaultEncryptionSettings();
     encryptionSettings.Password = "123";

     using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Create, false, null, null, encryptionSettings))
     {
          using (ZipArchiveEntry entry = archive.CreateEntry("document.txt"))
          {
               StreamWriter writer = new StreamWriter(entry.Open());
               BinaryFormatter formatter = new BinaryFormatter();
               formatter.Serialize(writer.BaseStream, this);
          }
     }
}
When assigning a string directly for the password, the code works. If I assign the password via a string variable, the zip archive is not encrypted.

Aleks
Telerik team
 answered on 06 Jun 2023
1 answer
625 views

Hello,

After reading multiple questions in this forum regarding why the RadGridView is not refreshing when an existing item is updated, I am developing the refresh mechanism. I tried your suggest (calling CollectionChanged.Reset) but this solution is not good for us because when we call CollectionChanged the RadGridView is updated and also a lot of elements are drawn in a screen (thousand of elements and it cost a lot of performance).

So my solution is using a timer with refresh interval of 1 second which will refresh all the subscribed RadGridViews.

* I used WeakRefereces to avoid Memory Leaks.

In the distpatcher timer I do the following code:

if(radGridView == null || !radGridView.IsVisible) return;

var isRefreshRequired = radGridView.GroupDescriptors.Count >0 || radGridView.FilterDescriptors.Count>0 || radGridView.SortDescriptors.Count>0

if(isRefreshRequired)

{

   var collectionView = CollectionViewSource.GetDefaultView(radGridView.ItemSource);

   collectionView.Refresh?();

}

 

As mentioned, this code guarantees that only the view (RadGridView) is refresh and not the other elements of the SourceCollection.

I need your help with the following:

1. Only when there is a group and I scrolled down, after refresh the grid jumps to top (I couldn't reproduce when sorting or filter is enabled).

2. There is any good way to really know if the RadGridView is shown on screen (maybe it is visible but hidden in other tab), I need a method with fast access because I may check around 15 grids every second and I want to refresh only the required grids.

3. I tried to refresh the radGridView.Items instead of radGridViewItemsSource.
I expected this to work beause Items holds the items after grouping/filter/sorting. Unfortuneatly ,it doesn't work.

There is any way to refresh your internal view instead of the SourceCollection view that is bound to ItemSource?

The problem is that CollectionChanged on the view, triggers other code on my side that it will be good to skip for this case.

EDIT:

* I figured out that if I have a grid with 500 elements with two groups of 250 rows and one group is expanded then the application is almost freeze, the refresh is killing the performance. I think that my solution is better than Collection Reset so I don't know how to solve this :(

* Regarding point one, I think that the grid jumps because the Panel Unit is set to Content. I can't switch to Pixel because it will cause bad performance.

* I noticed that you have the method Reset for GroupDescriptors and SortDescriptors, the performance is the same. I taught that you maybe manage an internal caching and have some improvements there.

Vladimir Stoyanov
Telerik team
 answered on 05 Jun 2023
0 answers
162 views

I have tried to create two RadNumericUpDown controls, first one has a minimum value and second one has a maximum value. I thought that I can bind automatically minimum value as Minimum for second control, but here is the problem.

Problem is happens when Minimum value of RadNumericUpDown control was updated, but updated Value of second control was not bound to source.

<StackPanel>
        <telerik:RadNumericUpDown Value="{Binding MinValue, Mode=TwoWay}"/> //changes here are not updatind value of second control
        <telerik:RadNumericUpDown Value="{Binding MaxValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                                  Minimum="{Binding MinValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>

 

 

Kostiantyn
Top achievements
Rank 1
Iron
 asked on 01 Jun 2023
Narrow your results
Selected tags
Tags
GridView
General Discussions
Chart
RichTextBox
Docking
ScheduleView
ChartView
TreeView
Diagram
Map
ComboBox
TreeListView
Window
RibbonView and RibbonWindow
PropertyGrid
DragAndDrop
TabControl
TileView
Carousel
DataForm
PDFViewer
MaskedInput (Numeric, DateTime, Text, Currency)
AutoCompleteBox
DatePicker
Buttons
ListBox
GanttView
PivotGrid
Spreadsheet
Gauges
NumericUpDown
PanelBar
DateTimePicker
DataFilter
Menu
ContextMenu
TimeLine
Calendar
Installer and Visual Studio Extensions
ImageEditor
BusyIndicator
Expander
Slider
TileList
PersistenceFramework
DataPager
Styling
TimeBar
OutlookBar
TransitionControl
FileDialogs
Book
ToolBar
ColorPicker
TimePicker
MultiColumnComboBox
SyntaxEditor
VirtualGrid
Wizard
ExpressionEditor
NavigationView (Hamburger Menu)
WatermarkTextBox
DesktopAlert
BarCode
SpellChecker
DataServiceDataSource
EntityFrameworkDataSource
RadialMenu
ChartView3D
Data Virtualization
BreadCrumb
ProgressBar
Sparkline
LayoutControl
TabbedWindow
ToolTip
CloudUpload
ColorEditor
TreeMap and PivotMap
EntityFrameworkCoreDataSource (.Net Core)
HeatMap
Chat (Conversational UI)
VirtualizingWrapPanel
Calculator
NotifyIcon
TaskBoard
TimeSpanPicker
BulletGraph
Licensing
WebCam
CardView
DataBar
FilePathPicker
PasswordBox
Rating
SplashScreen
Accessibility
Callout
CollectionNavigator
Localization
AutoSuggestBox
Security
VirtualKeyboard
HighlightTextBlock
TouchManager
StepProgressBar
Badge
OfficeNavigationBar
ExpressionParser
CircularProgressBar
SvgImage
PipsPager
SlideView
AI Coding Assistant
+? more
Top users last month
Edmond
Top achievements
Rank 1
Iron
fabrizio
Top achievements
Rank 2
Iron
Veteran
RobMarz
Top achievements
Rank 2
Iron
Fakhrul
Top achievements
Rank 1
Iron
Tejas
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Edmond
Top achievements
Rank 1
Iron
fabrizio
Top achievements
Rank 2
Iron
Veteran
RobMarz
Top achievements
Rank 2
Iron
Fakhrul
Top achievements
Rank 1
Iron
Tejas
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?