【问题标题】:Datagrid I Can't refresh field数据网格我无法刷新字段
【发布时间】:2015-04-28 15:59:26
【问题描述】:

我无法刷新数据网格中的字段。

这是我的DataGrid

<DataGrid ItemsSource="{Binding Dati_Viaggio}"
          SelectedItem="{Binding SelectDati_Viaggio}" 
          Style="{DynamicResource ST_DataGrid}" 
          CellStyle="{DynamicResource St_DataGridCellStyle}"
          SelectionMode="Single"  Name="Dg_Dati" IsReadOnly="True"
          RowDetailsVisibilityMode="VisibleWhenSelected">

这是DataGrid中我要刷新的字段

<DataGridTextColumn x:Name="col_NumOrd" Binding="{Binding Path=NumOrd}"
                    Header="Num. Ord." Width="150"/>

这是属性:

public ObservableCollection<Model_Ricerca_Dati_Viaggio> Dati_Viaggio { get; set; }
private Model_Ricerca_Dati_Viaggio _SelectDati_Viaggio;
public Model_Ricerca_Dati_Viaggio SelectDati_Viaggio
{
    get { return _SelectDati_Viaggio; }
    set
    {
        _SelectDati_Viaggio = value;
        OnPropertyChanged("SelectDati_Viaggio");
    }
}

如果我编写此代码,为什么DataGrid 不会刷新字段?

SelectDati_Viaggio.NumOrd= "abcabc";
OnPropertyChanged("SelectDati_Viaggio");

谢谢。

【问题讨论】:

标签: c# wpf datagrid refresh


【解决方案1】:

尝试通过重新声明并重新查询集合并初始化到数据网格来刷新绑定,经过几天的解决方案搜索后才尝试过。如果你明白了。

server = mongoClient.GetServer();
database = server.GetDatabase("facultyDataAndSchedule");
collection = database.GetCollection<facultyData>("faculty");
var query = collection.FindAllAs<facultyData>()
    .SetFields(Fields.Include("facultyID", "term", "acadYear", "age",
    "program", "lastName", "firstName", "middleName", "dateOfBirth",
    "rank", "yearsOfTeachingS", "yearsOfTeachingO", "status", "services"));
// List<facultyData> resultList = query.ToList<facultyData>();
resultBinding = new ObservableCollection<facultyData>(query);
facultyDataGrid.ItemsSource = resultBinding;
try
{
    try
    {
        var entity = new facultyData
        {
            facultyID = facultyID_Textbox.Text.ToString(),
            term = termComboBox.SelectedItem.ToString(),
            age = int.Parse(age_TextBox.Text),
            acadYear = "2014-2015",
            firstName = firstName_TextBox.Text.ToString(),
            lastName = lastName_TextBox.Text.ToString(),
            middleName = middleName_TextBox.Text.ToString(),
            dateOfBirth = dateOfBirth_TextBox.Text.ToString(),
            program = "progra",
            rank = "gegs",
            services = "gegsg",
            status = "geh",
            yearsOfTeachingO = 1,
            yearsOfTeachingS = 1
        };
        collection.Insert(entity);
    }
    catch (FormatException ex)
    {
        Console.WriteLine(ex);
    }
}
catch (MongoConnectionException ex)
{
    Console.WriteLine(ex);
}
var query1 = collection.FindAllAs<facultyData>()
    .SetFields(Fields.Include("facultyID", "term", "acadYear", "age",
    "program", "lastName", "firstName", "middleName", "dateOfBirth",
    "rank", "yearsOfTeachingS", "yearsOfTeachingO", "status", "services"));
// List<facultyData> resultList = query.ToList<facultyData>();
resultBinding = new ObservableCollection<facultyData>(query1);
facultyDataGrid.ItemsSource = resultBinding;

【讨论】:

    【解决方案2】:

    我想在这里:

    <DataGridTextColumn x:Name="col_NumOrd" Binding="{Binding Path=NumOrd}"/>
    

    你绑定到NumOrd 但在这里:

    SelectDati_Viaggio.NumOrd= "abcabc";
    OnPropertyChanged("SelectDati_Viaggio");
    

    通知SelectDati_Viaggio,需要通知NumOrd

    SelectDati_Viaggio.NumOrd= "abcabc";
    OnPropertyChanged("NumOrd");
    

    比您的控件知道属性已更新和刷新

    编辑: 编辑您的SelectDati_Viaggio 课程

    private string numOrd;
    public string NumOrd 
    { 
       get { return numOrd; } 
       set { numOrd = value; OnPropertyChanged("NumOrd"); }
    }
    

    希望有所帮助!

    【讨论】:

    • 非常感谢您的重播,但没有刷新。
    • 您的 OnPropertyChanged 工作正常吗?如果工作正常,请将 OnPropertyChanged 放在 NumOrd 属性的设置器上 @Alan392
    • 是的,这个 OnPropertyChanged("SelectDati_Viaggio") 工作正常
    • 如果我检查 SelectDati_Viaggio 中的值,我会看到新值 (abcabc) 但在 datagrid 上没有刷新
    • 您的 NumOrd 属性的设置器中有 OnPropertyChanged("NumOrd") 吗? @艾伦392
    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2012-02-28
    相关资源
    最近更新 更多