I have used RadGridViews(Telerik.Windows.Controls.GridView) in WPF that has some column. The
header of column is a CheckBox. Some times header CheckBox content binding is works fine, but when i changed to another form and return back to the same form CheckBox content binding doesn't work ie, its not showing the CheckBox contant.
the code is below
<telerikGrid:RadGridView >
<telerikGrid:RadGridView.Columns>
<telerikGrid:GridViewDataColumn DataMemberBinding="{Binding Name}" >
<telerikGrid:GridViewBoundColumnBase.Header >
<CheckBox IsChecked="False" Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerikGrid:RadGridView}}, Path=DataContext.HeaderName}" />
</telerikGrid:GridViewBoundColumnBase.Header>
</telerikGrid:GridViewDataColumn>
</telerikGrid:RadGridView >
its shows some time like this
any solution pls send me, very urgent..
thanks
Govind
Problem:
In my application I am displaying data in grid. I also want a radio button to be inserted in 1 st column. On the selection of that radio button new pop-up screen should appear having details of the selected row.
I am using Telerik:RadGridView to display data . I am able to fetch the data and display.
I am getting around 4000 records fetched, now when i select a radio button and scroll down the selected row is deselected and some other random row gets selected.Sometimes no rows gets selected.
Approach followed:
I have followed following approach using virtualization
Inside my RadGridView i worte
VirtualizingStackPanel.IsVirtualizing
="True"
ScrollMode="RealTime"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True"
and
<telerik:GridViewDataColumn Header="" Width="35" DataMemberBinding="{Binding IsSelected, Mode=TwoWay}">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<RadioButton Click="radEditGroup_Click" HorizontalAlignment="Center" Checked="radEditGroup_Checked" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" x:Name="radEditGroup" GroupName="Groups" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
In .cs file for Checked ="radEditGroup_Checked" i looped through groups and deselected the radio buttons and displayed last checked button value.
private
void radEditGroup_Checked(object sender, RoutedEventArgs e)
{
try
{
ClearMessage();
if ((sender as RadioButton) != null &&
((sender
as RadioButton).DataContext as Groups) != null)
{
var lobjSelectedGroups = from lobGroup in _Groups
where lobGroup.IsSelected == true
select lobGroup;
if (lobjSelectedGroups != null)
{
foreach (Groups lobGroup in lobjSelectedGroups)
{
lobGroup.IsSelected =
false;
}
}
this._intGroupID = ((sender as RadioButton).DataContext as Groups).FUNCTION_GRP_ID;
this._intFunctionId = ((sender as RadioButton).DataContext as Groups).Function_Id;
(sender
as RadioButton).Checked -= radEditGroup_Checked;
(sender
as RadioButton).IsChecked = true;
(sender
as RadioButton).Checked += radEditGroup_Checked;
}
}
catch (Exception objEx)
{
ErrorHandling.CatchAllExceptions(objEx);
}
}
Issue facing:
When i am selecting the radio button and scrolling down Checked event gets called and slected row gets deselected.
How can i ensure that the radio button which is checked remain same even when i scoll up and down.
<Window.Resources> <DataTemplate x:Key="PanelBarItemTemplate"> <StackPanel Orientation="Vertical"> <TextBlock Text="{Binding PropertyName}"/> <TextBlock Text="{Binding PropertyValue}"/> <TextBlock Text="{Binding Comments}"/> </StackPanel> </DataTemplate> <HierarchicalDataTemplate x:Key="PanelBarHeaderTemplate" ItemsSource="{Binding Items,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ItemTemplate="{StaticResource PanelBarItemTemplate}"> <TextBlock Text="{Binding Title}" /> </HierarchicalDataTemplate> </Window.Resources> <Grid> <DockPanel> <DockPanel DockPanel.Dock="Right" Width="350"> <Label /> </DockPanel> <DockPanel DockPanel.Dock="Right" VerticalAlignment="Bottom"> <telerik:RadPanelBar ItemsSource="{Binding AccordionItems,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" ItemTemplate="{StaticResource PanelBarHeaderTemplate}" telerik:StyleManager.Theme="Windows7"/> </DockPanel> </DockPanel> </Grid>public class MainViewModel:ViewModelBase { public MainViewModel() { _accordionItems = new List<AccoordionHelper>(); AccordionItems = new List<AccoordionHelper>(); _accordionItems.Add(new AccoordionHelper("OffFinalBill", new AccordionItemsHelper(){ Comments="hello", PropertyName="Off Final 1: ", PropertyValue= "12121" })); _accordionItems.Add(new AccoordionHelper("PartFinal", new AccordionItemsHelper() { Comments = "hello", PropertyName = "Off Final 1: ", PropertyValue = "12121" })); AccordionItems = _accordionItems; } private List<AccoordionHelper> _accordionItems = new List<AccoordionHelper>(); public List<AccoordionHelper> AccordionItems { get { if (_accordionItems == null) { _accordionItems = new List<AccoordionHelper>(); } return _accordionItems; } set { _accordionItems = value; this.RaisePropertyChanged("AccordionItems"); } } } public class AccoordionHelper:ViewModelBase { private string _title; public string Title { get { return _title; } set { _title = value; this.RaisePropertyChanged("Title"); } } private AccordionItemsHelper _items; public AccordionItemsHelper Items { get { if (_items == null) { _items = new AccordionItemsHelper(); } return _items; } set { _items = value; this.RaisePropertyChanged("Items"); } } public AccoordionHelper( string title, AccordionItemsHelper items) { Items=items; Title = title; } } public class AccordionItemsHelper { public string PropertyName { get; set; } public string PropertyValue { get; set; } public string Comments { get; set; } }private void editCabinetForm_AutoGeneratingField(object sender, Telerik.Windows.Controls.Data.DataForm.AutoGeneratingFieldEventArgs e) { if (e.PropertyName == "CabinetName") { e.DataField.Label = "Cabinet Name"; } else if (e.PropertyName == "BriefDescription") { e.DataField.Label = "Brief Description"; } else if (e.PropertyName == "Comments") { RadRichTextBox commentsBox = new RadRichTextBox(); //commentsBox.SetBinding(???, new Binding("Comments")); e.DataField.Content = commentsBox; e.DataField.Label = "Comments"; } else { e.Cancel = true; } }dBVideoArchiveDataSetArchiveTableTableAdapter.Update(dBVideoArchiveDataSet.ArchiveTable);
dBVideoArchiveDataSet.AcceptChanges();
radGridView1.Rebind();
-populate table (set binding in row_loaded)
-set background on viewmodel
-converter not called.
-clear table
-populate table (again create binding)
-set background, then it is called.
While in debug, when I checked PropertChanged.Target, in first run it is System.ComponentModel.PropertyChangedEventManager (doesnt work),
and in the second run, it is Telerik.Windows.Data.WeakEvent.WeakListener<System.ComponentModel.PropertyChangedEventArgs>.
Telerik version : 2011.1.411.40
MultiBinding multiBindingBackground = new MultiBinding(); multiBindingBackground.Converter = cellColorConverter; Binding background = new Binding("Background"); background.Source = row.Item; background.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; //background.Mode = BindingMode.TwoWay; multiBindingBackground.Bindings.Add(background); multiBindingBackground.Bindings.Add(rcBinding); Binding isBackgroundForBackground = new Binding(); isBackgroundForBackground.Source = true; multiBindingBackground.Bindings.Add(isBackgroundForBackground); multiBindingBackground.Bindings.Add(new Binding()); cellBase.SetBinding(GridViewCellBase.BackgroundProperty, multiBindingBackground);