При попытке добавить элементы в сетку данных или очистить сетку данных происходит ошибка - PullRequest
0 голосов
/ 22 мая 2019

У меня есть сетка данных, и она сначала пуста. Затем мне нужно добавить элементы, когда пользователь выбирает некоторые данные. Но здесь это показывает ошибку как

Ошибка:

System.InvalidOperationException: операция недопустима во время использования ItemsSource. Вместо этого открывайте и изменяйте элементы с помощью ItemsControl.ItemsSource.

Я действительно не понял, в чем здесь проблема.

Я пробовал datagridName.Items.clear(); и datagridName.Items.Add();. но оба не сработали.

private void TextboxBarCodeTextchanged(object sender,RoutedEventArgs e)
{
  DataGridSalesDetails.Items.Clear();
    for (int i = 0; i < AllStockList.Count; i++)
    {
      if (!string.IsNullOrEmpty((sender as TextBox).Text))
      {
        if (AllStockList[i].BarCode.StartsWith((sender as TextBox).Text, 
        StringComparison.InvariantCultureIgnoreCase))
        {
          Stock vend = AllStockList[i] as Stock;
          DataGridSalesDetails.Items.Add(vend);
          DataGridSalesDetails.Visibility = Visibility.Visible;
          DataGridSalesDetails.Items.Refresh();
          TotalReturnAmount = AllStockList.Sum(a => a.TotalAmount);
          HiddenTotalAount.Text = TotalReturnAmount.ToString();
          LabelFinalAmountValue.Content = TotalReturnAmount.ToString();
        }
      }
    }
}

Ожидаемый результат - таблица данных с добавленными значениями. Я получаю ошибку. Есть ли кто-нибудь, чтобы помочь мне? Я застрял с моим проектом.

1 Ответ

0 голосов
/ 22 мая 2019

При работе с сетями данных вы должны назначить коллекцию элементов для itemSource этой сетки данных.Вместо того, чтобы назначать коллекцию itemSource, вы пытаетесь добавить новый элемент в эту сетку данных.

Вам необходимо отфильтровать интересующие вас объекты Stock и добавить их в коллекцию.Когда итерация завершена и объекты Stock добавлены в коллекцию, вам необходимо назначить коллекцию ItemSource.

Обновить с OP

Itemssourceсетки данных связан с наблюдаемой коллекцией.И ОП хочет сохранить старый список элементов фондовых объектов.

ObservableCollection<Stock> StockItems = new ObserveableCollection<Stock>();

private void TextboxBarCodeTextchanged(object sender,RoutedEventArgs e)
{

oldCollection = ObservableCollection;

for (int i = 0; i < AllStockList.Count; i++)
   {
      if (!string.IsNullOrEmpty((sender as TextBox).Text))
      {
          if (AllStockList[i].BarCode.StartsWith((sender as TextBox).Text, 
          StringComparison.InvariantCultureIgnoreCase))
          {
             var stock = AllStockList[i] as Stock;

             StockItems.Add(stock);
           }
         }
      }
             DataGridSalesDetails.Visibility = Visibility.Visible;
             TotalReturnAmount = filteredCollection.Sum(a => a.TotalAmount);
             HiddenTotalAount.Text = TotalReturnAmount.ToString();
             LabelFinalAmountValue.Content = TotalReturnAmount.ToString();
}
...