Как обновить просмотр списка после вставки новой строки SQL? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть буксирные окна в WPF APP , в первых окнах администратор добавит информацию о заявке, а в других окнах сотрудник должен показать список всех заявок, причем однажды новая была добавлена ​​(автоматически). на следующий простой код:

//On User Window, set the itemSource
     DataClasses1DataContext dc = new DataClasses1DataContext(Properties.Settings.Default.AJFactoryConnectionString);
     public MainWindow() 
      {
        if (dc.DatabaseExists()) AllTasksListView.ItemsSource = dc.TicketTables;};
//List View 
<ListView Name="AllTasksListView" >
//Admin Window that allow him to add anew ticekt 
  public DataClasses1DataContext dc = new DataClasses1DataContext(Properties.Settings.Default.AJFactoryConnectionString);
        public void InsertNewTickt(string Status,string Descrption)
        {
            TicketTable x = new TicketTable
            {
                CreatedDate = DateTime.Now,
                Status = Status,
                DeliveryDate = DateTime.Now,
                Descrption = Descrption

            };
            dc.TicketTables.InsertOnSubmit(x);
            try
            {
                dc.SubmitChanges();
            }
            catch (Exception ee)
            {
                dc.SubmitChanges();
            }
}

Мне нужен хороший способ обновить listview сразу же, как только администратор добавит новый тикет (новая строка в sql ). Я новичок в WPF , и я нахожу много решений, но в тех же окнах, в моем случае у меня есть 2 окна.

1 Ответ

0 голосов
/ 01 ноября 2018

Установите ItemsSource для ListView на ObservableCollection<TicketTable> и добавьте вновь созданный объект TicketTable к этому. Для работы окна администратора потребуется ссылка на MainWindow. Вы можете добавить его со ссылкой или получить его из свойства Application.Current.Windows.

MainWindow:

if (dc.DatabaseExists()) 
    AllTasksListView.ItemsSource = new ObservableCollection<TicketTable>(dc.TicketTables);

AdminWindow:

...
dc.TicketTables.InsertOnSubmit(x);
dc.SubmitChanges();
var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
if (mainWindow != null)
{
    var sourceCollection = mainWindow.AllTasksListView as ObservableCollection<TicketTable>;
    if (sourceCollection != null)
        sourceCollection.Add(x);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...