Я не могу обновить поле в своей сетке данных.
Это моя сетка данных
<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 ответа
Попробуйте обновить привязку, повторно объявив и повторно запросив коллекции и инициализировав сетку данных, просто попробовали это после нескольких дней поиска решений. Если вы поняли.
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;
Я думаю здесь:
<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"); }
}
Надежда помогает!
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.