Я не могу обновить поле в своей сетке данных.

Это моя сетка данных

 <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" >

Это поле в сетке данных, которое я хочу обновить

 <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");}

Почему, если я напишу этот код, сетка данных не обновит поле?

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

Спасибо

2
Alan392 26 Фев 2015 в 13:15

2 ответа

Лучший ответ

Попробуйте обновить привязку, повторно объявив и повторно запросив коллекции и инициализировав сетку данных, просто попробовали это после нескольких дней поиска решений. Если вы поняли.

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;
1
f123 2 Мар 2015 в 07:02

Я думаю здесь:

<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"); }
}

Надежда помогает!

1
Jamaxack 26 Фев 2015 в 11:03