Hello,
I have some of GridViewCheckBoxColumn and GridViewComboBoxColumn that bound to nested property which works perfectly. But when I try to use ExportToXlsx() to export into excel file, result from every columns that bound to nested property are different.
GridViewCheckBoxColumn bound to nested property yields True/False instead of TRUE/FALSE and GridViewComboBoxColumn yields selected value instead of display value which I preferred display value.
Is there anyway to make all columns regardless of nested property binding to be exported in the same format?
Here's my sample code
<
Window
x:Class
=
"WpfApplication3.Window4"
xmlns:local
=
"clr-namespace:WpfApplication3"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable
=
"d"
Title
=
"Window4"
Width
=
"800"
Height
=
"300"
>
<
StackPanel
>
<
telerik:RadGridView
Name
=
"grid1"
ItemsSource
=
"{Binding GridItemSoure}"
AutoGenerateColumns
=
"False"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
Header
=
"Display"
DataMemberBinding
=
"{Binding Display}"
/>
<
telerik:GridViewCheckBoxColumn
Header
=
"IsChecked"
DataMemberBinding
=
"{Binding IsChecked}"
/>
<
telerik:GridViewComboBoxColumn
Header
=
"SelectedItem"
DataMemberBinding
=
"{Binding SelectedItemId}"
ItemsSource
=
"{Binding ComboItemSource}"
DisplayMemberPath
=
"Display"
SelectedValueMemberPath
=
"Id"
/>
<
telerik:GridViewDataColumn
Header
=
"Amount"
DataMemberBinding
=
"{Binding Amount}"
/>
<
telerik:GridViewDataColumn
Header
=
"This.Display"
DataMemberBinding
=
"{Binding This.Display}"
/>
<
telerik:GridViewCheckBoxColumn
Header
=
"This.IsChecked"
DataMemberBinding
=
"{Binding This.IsChecked}"
/>
<
telerik:GridViewComboBoxColumn
Header
=
"This.SelectedItem"
DataMemberBinding
=
"{Binding This.SelectedItemId}"
ItemsSource
=
"{Binding ComboItemSource}"
DisplayMemberPath
=
"Display"
SelectedValueMemberPath
=
"Id"
/>
<
telerik:GridViewDataColumn
Header
=
"This.Amount"
DataMemberBinding
=
"{Binding This.Amount}"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
<
Button
Click
=
"Button_Click"
>Export</
Button
>
</
StackPanel
>
</
Window
>
public
partial
class
Window4 : Window
{
public
Window4()
{
InitializeComponent();
this
.DataContext =
new
{
GridItemSoure =
new
List<RowItem>()
{
new
RowItem() { Display =
"Row1"
, IsChecked =
true
, SelectedItemId =
null
, Amount = 9.999m },
new
RowItem() { Display =
"Row2"
, IsChecked =
false
, SelectedItemId =
null
, Amount = 10000 },
new
RowItem() { Display =
"Row3"
, IsChecked =
true
, SelectedItemId = 2, Amount = 1/3 },
new
RowItem() { Display =
"Row4"
, IsChecked =
false
, SelectedItemId = 3, Amount = -1/3 },
},
ComboItemSource =
new
List<Item>()
{
new
Item() { Id = 1, Display =
"Item 1"
},
new
Item() { Id = 2, Display =
"Item 2"
},
new
Item() { Id = 3, Display =
"Item 3"
},
},
};
}
private
void
Button_Click(
object
sender, RoutedEventArgs e)
{
string
extension =
"xlsx"
;
SaveFileDialog dialog =
new
SaveFileDialog()
{
DefaultExt = extension,
Filter = String.Format(
"{1} files (*.{0})|*.{0}|All files (*.*)|*.*"
, extension,
"Excel Workbook"
),
FilterIndex = 1
};
if
(dialog.ShowDialog() ==
true
)
{
using
(Stream stream = dialog.OpenFile())
{
grid1.ExportToXlsx(stream,
new
GridViewDocumentExportOptions()
{
ShowColumnHeaders =
true
,
ShowColumnFooters =
true
,
ShowGroupFooters =
true
,
AutoFitColumnsWidth =
true
,
ExportDefaultStyles =
false
,
});
}
}
}
}
public
class
RowItem : INotifyPropertyChanged
{
private
string
_Display;
public
string
Display
{
get
{
return
_Display; }
set
{
this
._Display = value;
OnPropertyChanged(nameof(Display));
}
}
private
bool
_IsChecked;
public
bool
IsChecked
{
get
{
return
_IsChecked; }
set
{
this
._IsChecked = value;
OnPropertyChanged(nameof(IsChecked));
}
}
private
int
? _SelectedItemId;
public
int
? SelectedItemId
{
get
{
return
_SelectedItemId; }
set
{
this
._SelectedItemId = value;
OnPropertyChanged(nameof(SelectedItemId));
}
}
private
decimal
? _Amount;
public
decimal
? Amount
{
get
{
return
_Amount; }
set
{
this
._Amount = value;
OnPropertyChanged(nameof(Amount));
}
}
public
RowItem This
{
get
{
return
this
;
}
}
public
event
PropertyChangedEventHandler PropertyChanged;
private
void
OnPropertyChanged(
string
name)
{
if
(PropertyChanged !=
null
)
PropertyChanged(
this
,
new
PropertyChangedEventArgs(name));
}
}
public
class
Item : INotifyPropertyChanged
{
private
string
_Display;
public
string
Display
{
get
{
return
_Display; }
set
{
this
._Display = value;
OnPropertyChanged(nameof(Display));
}
}
private
int
? _Id;
public
int
? Id
{
get
{
return
_Id; }
set
{
this
._Id = value;
OnPropertyChanged(nameof(Id));
}
}
public
event
PropertyChangedEventHandler PropertyChanged;
private
void
OnPropertyChanged(
string
name)
{
if
(PropertyChanged !=
null
)
PropertyChanged(
this
,
new
PropertyChangedEventArgs(name));
}
}
Thanks
Hi,
I have a huge amount of data, which I don't want to load all into the gridview.
I want to have the following scenario: The user applies filter with the default filtering control. The ViewModel get the FilterDescriptor and request the filtered Data at the DataService. The GridView shows the received data.
I don't want to use the filter for filtering the data bound to the gridview, I want to use it to request filtered data.
Moritz
I've modified the AppointmentItemHorizontalControlTemplate template to include a popup like so:
<
ControlTemplate
x:Key
=
"AppointmentItemHorizontalControlTemplate"
TargetType
=
"telerikScheduleView:AppointmentItem"
>
<
Grid
x:Name
=
"Root"
>
<
Popup
Style
=
"{StaticResource AppointmentPopupStyle}"
PlacementTarget
=
"{Binding ElementName=Root}"
/>
...
</
ControlTemplate
>
The popup shows as expected, however when I try to selected something on the popup by holding down the left mouse button, a drag effect is initiated beneath it that is trying to move the appointment into another slot (e.g when using the Month View definition). Unfortunately no event is received in the popup until after the drag effect is initiated.
Is there are a way to cancel the drag effect of the schedule view when the user is interacting with a popup?
now the fluent theme use the Aero effect,the background is too clear,
the Acrylic effect is better!
there is a opensource project: https://github.com/sourcechord/FluentWPF
the principal code:
internal enum AccentState
{
ACCENT_DISABLED = 0,
ACCENT_ENABLE_GRADIENT = 1,
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
ACCENT_ENABLE_BLURBEHIND = 3,
ACCENT_ENABLE_ACRYLICBLURBEHIND = 4,
ACCENT_INVALID_STATE = 5
}
accent.GradientColor = 0x00FFFFFF;
Hello,
A multi-selection RadComboBoxis integrated into a cell of a RadGridView in the
project that is attached.
The problem I have when trying to add a handle to an event to customize the
loading of the multiple values of the RadComboBox.
This code does not work ...
FrameworkElementFactory dateFactory = new FrameworkElementFactory (typeof
(RadComboBox), "Target");
dateFactory.SetValue (RadComboBox.AllowMultipleSelectionProperty, true);
dateFactory.SetValue (RadComboBox.ItemsSourceProperty, new List
<string> {"DBF", "REP"});
// Add handler not rule
RoutedEventHandler handler = new RoutedEventHandler (LoadedTarget_RadComboBox);
dateFactory.AddHandler (RadComboBox.LoadedEvent, handler, true);
On the other hand, if I add the handler outside of a Grid it works correctly
Thanks in advance.
[I'm attaching the test project code concerning the problem]
we are using 2 RadTreeview in of our form in WPF application.
we got a requirement that one RadTreeView will have only one parent folder like Favoirites.
so whenever any folder is selected by user in another RadTreeview ,then that folder must be added in Favoirites
Ex:
RadTreeView1
Favourites
--->MyFolder
RadTreeView2
Categories
-->MyFolder
At first Favourites will be empty and when user will select MyFolder it will be getting added into Favourites.
Please help me.
How can I force data-grid refresh on the Outlook Template for VS2018?
At this moment, when I make a change on the cell, I need to close the group and open the group to see the changes.
I am using observablecollection and INotifyPropertyChanges.
I saw in some forum that I can force the grid to update, I want to do this with a button which calls on a command function from the command file in the template.
e.g. DataGridName.Item.Refresh();
But it seems like I can't find the reference to the datagrid at all.
Is there a way to have the Search box selected when a window with RadGridView is initialized? I want the user to be able to search straight away, without having to first click on the search box to enter text.
Hi Telerik,
I'm working with your outlook inspired template for VS 2018 and is a bit stucked.
For the moment, the data in the data-grid seem displays the data from the outlook section.
My problem is: I want the data in the data-grid to be displayed independently from the outlook section, which means, that by removing the outlook section, the data in the data-grid should not disappear.
What is the easiest way for me to achieve this, without breaking functionality like hasSelected unread/read?
However, the data I want to display is the exact same emails created in the SampleContentService, I just don't want to bind the data-grid to these folders in the outlook sections.
Thanks
Hi,
How can I change ItemsSource in the outlook template?
At the moment, it seems like the e-mails shown in the data-grid is retrieved through the Outlook Section.
How can I bind data independent of the outlook section? Because I'm thinking of removing the OutlookBar and OutlookItem (Panel of the left side), and this makes the e-mails from the data-grid disapp
private static ObservableCollection<ContractGroup> _contractGroup;
public static ObservableCollection<Contract> GetContracts(int size, string keyword)
{
var contracts = new ObservableCollection<Contract>();
for (int i = 1; i <= size; i++)
{
XamlFormatProvider xamlFormatProvider = new XamlFormatProvider();
contracts.Add(new Contract() { Symbol = test
}
return contracts;
}
I want to retrieve the contracts,directly from the SampleContentService, how can I do this?