Удалить запрос не работает (без ошибок / синтаксических ошибок)

Это ошибка DataBinding

. Самый простой способ прочитать их - разбить его на двоеточие / полуколоны и прочитать его назад

System.Windows. Ошибка данных: 40: Ошибка пути BindingExpression: свойство 'Sender' не найдено в 'object' '' Char '(HashCode = 6619237)'. BindingExpression: Path = Sender; DataItem = 'Char' (HashCode = 6619237); целевым элементом является «TextBlock» (Name = ''); target свойство is 'Text' (type 'String')

blockquote>
  1. target свойство is 'Text' (type 'String')
  2. target element is 'TextBlock '(Name =' ');
  3. BindingExpression: Path = Sender;
  4. DataItem = 'Char' (HashCode = 6619237);
  5. Свойство «Отправитель» не найдено в 'object' '' Char '(HashCode = 6619237)'.
  6. Ошибка пути BindingExpression:
  7. Ошибка System.Windows.Data: 40:

1 сообщает вам, что существует свойство Text, вызывающее ошибка

2 говорит вам, что свойство Text находится на элементе

3, сообщает вам, что проблема связи является причиной проблемы {Binding Path=Sender}

4 говорит вам, что DataItem / DataContext за элементом является элементом типа данных Char

5, который указывает на фактическую проблему: нет свойства с именем Sender на объекте type Char

6 просто говорит вам, что это ошибка привязки

7 У меня нет , что это значит

Поскольку I см., что у вас есть общедоступное свойство с именем Sender в вашем классе Message, и ясно, что Message не Char, его очевидно, что ваш DataContext для каждого элемента неверен.

Поскольку он установлен в Char, наиболее вероятной причиной является привязка к строке, а DataContext для каждого элемента - символ в этой строке.

И, конечно, ItemsSource="{Binding Source=Messages} означает, что вы меняете binding Source от текущего DataContext до string. Строки - это только массивы символов, поэтому это означает, что вы привязываетесь к массиву символов { M, e, s, s, a, g, e, s }

Если вы измените свойство Source на свойство Path, он будет правильно читать DataContext.Messages вместо этого, и должен работать.


(Слово Path здесь необязательно, так как если вы не укажете имя свойства, тогда привязка предполагает, что это значение для свойства Path)

В качестве побочного примечания я не вижу, что вы устанавливаете свой DataContext в любом месте формы, и я не вижу общедоступного свойства Messages.

Конструктор MainWindow должен вероятно, имеет строку кода, которая выглядит так, чтобы установить DataContext в себя:

this.DataContext = this;

И вам, вероятно, понадобится публичное свойство для вашего ObservableCollection messages, чтобы привязка ListView могла его найти :

public ObservableCollection Messages
{
    get { return messages; }
    set { messages = value; }
}

Я не уверен, что это было просто упущено, или если вы не знали, что вам нужны были.

О, и если вы планируете изменить какие-либо из этих связанных свойств и автоматически обновить пользовательский интерфейс, вам также понадобится реализовать INotifyPropertyChanged :)

И так как я сейчас в учебном режиме, я решил, что должен также ссылаться на этот ответ:

Переход из Windows Forms в WPF

Я бы очень рекомендовал прочитать его (и связанные статьи), если вы новичок в работе WPF и переходите от Winforms к WPF. Кажется, что вы:)

0
задан Brendan Wilson 5 March 2019 в 04:59
поделиться

5 ответов

Можете ли вы выйти из: productCode? Вполне возможно, что значение не соответствует вашим ожиданиям, и удаление несуществующего элемента с радостью ничего не сообщит, если совпадение не найдено.

0
ответ дан Jupe 5 March 2019 в 04:59
поделиться

поле таблицы - prdocutcode, почему вас зовут только код, замените код под моим кодом

 <input type="hidden" name="productCode" value="<?php echo $product['productCode']; ?>">
0
ответ дан Mohammad Malek 5 March 2019 в 04:59
поделиться

Я думаю, у вас есть HTML и PHP коды в одном файле.

В чем может быть проблема:

Добавить условие, если форма размещена, перейти к удалению продукта.

if (isset(

Я думаю, у вас есть HTML и PHP коды в одном файле.

В чем может быть проблема:

Добавить условие, если форма размещена, перейти к удалению продукта.

[110]POST['productCode'])) { // Get ID $code = filter_input(INPUT_POST, 'productCode', FILTER_VALIDATE_INT); // Delete the product from the database if ($code != false) { $query = 'DELETE FROM products WHERE productCode = :productCode'; $statement = $db->prepare($query); $statement->bindValue(':productCode', $code); $success = $statement->execute(); $statement->closeCursor(); } }
0
ответ дан Pupil 5 March 2019 в 04:59
поделиться

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

<input type="hidden" name="productCode" value="<?php echo $product['productCode']; ?>">

Также вам нужно позаботиться о тегах php [ 111], который должен начинаться и заканчиваться для сценария php.

0
ответ дан Ayaz Shah 5 March 2019 в 04:59
поделиться

Пожалуйста, используйте пост-запрос AJAX для удаления по коду.

0
ответ дан PHP Geek 5 March 2019 в 04:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: