Listview文本框值不会恢复为原始值,即使未保存在DB中也是如此

时间:2011-07-29 02:47:52

标签: listview textbox revert

我在listview中有一个文本框,用户可以在其中编辑它,itemsource是obervablecollection。一切都运行良好,除了当用户编辑文本框的值并按下取消insted of save时,他关闭窗口并再次打开它,新值仍然应该返回到它的原始值。事实上,我直接从存储库db填充它,所以我不确定为什么它不会恢复到原始值。谁知道我的代码有什么问题?我错过了什么?感谢。

<ListView Name="lvNeutralEduc" Grid.Column="0" Grid.Row="0"   BorderBrush="Transparent"    Height="Auto" MaxHeight="300" ScrollViewer.HorizontalScrollBarVisibility="Auto">
                    <ListView.View>
                        <GridView>
                            <GridView.Columns>
                                <GridViewColumn Header="Family Law Course" Width="Auto" >
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsChecked="{Binding Path=IsFamilyLawCourse}" HorizontalAlignment="Center" Checked="CheckBox_Checked" Unchecked="CheckBox_Checked" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Course Title" Width="200" >
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBox Text="{Binding Path=ContinuingType, Mode=TwoWay}" Width="200" TextChanged="TextBox_TextChanged" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Course Date"  Width="110">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <useable:MaskedDatePicker DateValue="{Binding Path=CourseDate, Mode=TwoWay}"  Width="110" PreviewTextInput="MaskedDatePicker_PreviewTextInput" GotFocus="MaskedDatePicker_GotFocus" />
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Course Expiration"  Width="110">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <useable:MaskedDatePicker DateValue="{Binding Path=CourseExpiration, Mode=TwoWay}"  Width="110" PreviewTextInput="MaskedDatePicker_PreviewTextInput"/>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView.Columns>
                        </GridView>
                    </ListView.View>
                </ListView>

代码背后:

 public ObservableCollection<tblContinuingEducationHistory> EducNeutralList
    {
        get { return _educNeutrallist; }
        set
        {
            if (_educNeutrallist != value)
            {
                _educNeutrallist = value;
                OnPropertyChanged("EducNeutralList");
            }
        }
    }
//constructor
public NeutralContinuingEducHistory(tblNeutralFileMaint currentNeutralFM)
    {
        isAttyGal = false;   
        OtherCmdText = "Print Report";
        PrintCmdVisibility = Visibility.Visible;
        OtherCmdVisibility = Visibility.Collapsed;
        AttyGALFormVisibility = Visibility.Collapsed;
        ToggleVisibility();

        InitializeComponent();

        if (currentNeutralFM != null)
        {

            CurrentNeutralFM = currentNeutralFM;
            txtMemberName.Text = CurrentNeutralFM.FullName;
            var items = FileMaintenanceBusiness.Instance.GetManyNeutralFMContEducHistoryInfobyKeyword(currentNeutralFM.NeutralID, "NeutralID");//FileMaintenanceBusiness.Instance.GetManyNeutralFMContEducHistoryInfobyKeyword(currentNeutralFM.NeutralID, "NeutralID")!=null ? FileMaintenanceBusiness.Instance.GetManyNeutralFMContEducHistoryInfobyKeyword(currentNeutralFM.NeutralID, "NeutralID") : null);//currentNeutralFM.tblContinuingEducationHistories);
            EducNeutralList = items != null ? new ObservableCollection<tblContinuingEducationHistory>(items) : new ObservableCollection<tblContinuingEducationHistory>(CurrentNeutralFM.tblContinuingEducationHistories);
            countOrig = EducNeutralList != null ? EducNeutralList.Count : 0;
            lvNeutralEduc.ItemsSource = EducNeutralList;
        }

        this.DataContext = this;
    }

填充get方法的业务层:

 public IList<tblContinuingEducationHistory> GetManyNeutralFMContEducHistoryInfobyKeyword(string keyword, string by)
    {
        try
        {
            return _continuingEducationHistoryRepository.SelectManyByColumnKeyword(keyword, by);
        }
        catch (Exception ex)
        {

        }
        return null;
    }

EF的存储库:

 public IList<TEntity> SelectManyByColumnKeyword(string Key, string columnName)
    {

        // First we define the parameter that we are going to use the clause. 
        var xParam = Expression.Parameter(typeof(TEntity), typeof(TEntity).Name);
        MemberExpression leftExpr = MemberExpression.Property(xParam, columnName);
        Expression rightExpr = Expression.Constant(Key);
        BinaryExpression binaryExpr = MemberExpression.Equal(leftExpr, rightExpr);
        //Create Lambda Expression for the selection 
        Expression<Func<TEntity, bool>> lambdaExpr =
        Expression.Lambda<Func<TEntity, bool>>(binaryExpr,
        new ParameterExpression[] { xParam,  });
        //Searching ....
        IList<TEntity> resultCollection = ((IADRRepository<TEntity, TContext>)this).SelectAll
                    (new Specification<TEntity>(lambdaExpr));
        if (null != resultCollection && resultCollection.Count() > 0)
        {
            //return valid single result
            return resultCollection;
        }//end if 
        return null;
    }

1 个答案:

答案 0 :(得分:0)

我明白了。我在我的存储库中做了一些更改。 context.Refresh(RefreshMode.StoreWins,resultCollection); 解决了它。

 if (null != resultCollection && resultCollection.Count() > 0)
        {
            //return valid single result
           context.Refresh(RefreshMode.StoreWins, resultCollection);
           return resultCollection;
        }