I have a IterationStatusCollection property in view model which gets the status list current,waiting and closed.They are the combo box list tems.Inside row loaded I am running 2 linq queries to fill the StatusList as per my requirement.This StatusList I am binding to the xaml.
In new row I am also adding the required list but the problem is when I click on the current iteration(refer WrongCurrentStatusList.jpg) it holds the last updated listof Waiting status which is wrong it should hold its own list.
What should I do to update the list everytime??I also tried with 2 individual properties but no use.Plz help.
public void RadProjectIterationGridView_RowLoaded(object sender, Telerik.Windows.Controls.GridView.RowLoadedEventArgs e)
{
GridViewRow row = e.Row as GridViewRow;
//Get parent grid.
RadGridView _radGridView = e.GridViewDataControl as RadGridView;
if (e.Row is GridViewRow && !(e.Row is GridViewNewRow))
{
Iteration iteration = e.DataElement as Iteration;
if (e.Row.Cells[5].Content != null)
{
if(((LeMonNext.Common.Entities.Iteration)(((System.Windows.FrameworkElement)(e.Row.Cells[4].Content)).DataContext)).IterationStatusID.ToString() == LeMonNextResource.IterationClosedStatusID)
{
e.Row.Cells[5].IsEnabled = false;
e.Row.IsEnabled = false;
}
else
if (iteration != null & e.Row.Cells[5].Content != null)
if (iteration.IterationStatus == LeMonNextResource.IterationCurrentStatus && iteration.IterationID != 0)
{
this.StatusList = (from _statusRead in this.IterationStatusCollection
where _statusRead.IterationStatusId != 7
select _statusRead).ToList<IterationStatus>();
(_radGridView.Columns["IterationStatus"] as GridViewComboBoxColumn).ItemsSource = StatusList;
}
if (iteration.IterationStatus == LeMonNextResource.IterationWaitingStatus && iteration.IterationID == 0)
{
this.StatusList = (from _statusRead in this.IterationStatusCollection
where _statusRead.IterationStatusId != 9
select _statusRead).ToList<IterationStatus>();
(_radGridView.Columns["IterationStatus"] as GridViewComboBoxColumn).ItemsSource = StatusList;
}
}
}
}
{
RadGridView _radGridView = e.OwnerGridViewItemsControl as RadGridView;
IEnumerator<Iteration> iterEnum = IterationCollection.GetEnumerator();
int i = 0;
//Finding the current row
while (i < IterationCollection.Count)
{
++i;
iterEnum.MoveNext();
}
Iteration iter = iterEnum.Current;
//Finding the duration of the project
if (ClientStateService.SelectedProject.ProjectId != 0)
{
ProjectIterationHelper projectIterationHelper = new ProjectIterationHelper();
Iteration newIteration = projectIterationHelper.CreateNewIteration(ClientStateService.SelectedProject, iter);
if (newIteration.IterationID==0 && newIteration.IterationStatus == LeMonNextResource.IterationWaitingStatus)
{
this.StatusList = (from _statusRead in this.IterationStatusCollection
where _statusRead.IterationStatusId != 9
select _statusRead).ToList<IterationStatus>();
(_radGridView.Columns["IterationStatus"] as GridViewComboBoxColumn).ItemsSource = StatusList;
}
e.NewObject = newIteration;
}
}
My xaml where StstusList is there
<telerik:GridViewComboBoxColumn
DataMemberBinding="{Binding IterationStatusID,Mode=TwoWay}"
SelectedValueMemberPath="IterationStatusId"
DisplayMemberPath="IterationStatusName"
UniqueName="IterationStatus" Width="80"
IsResizable="False" ItemsSource="{Binding Path = StatusList,Mode=TwoWay}"
HeaderCellStyle="{StaticResource CustomHeaderCellStyle}"
CellTemplate="{StaticResource StatusComboBoxSelectionBoxTemplate}">
</telerik:GridViewComboBoxColumn>
My StsusList in view model:
public IList<IterationStatus> StatusList
{ get
{ return this._status; }
set
{
if (_status != value)
{ _status = value;
OnPropertyChanged("StatusList");
}
}
}
Thanks,
Sulagna