почему текстовый текст не может обнаружить изменения в элементах управления, связанных с представлением данных, когда эти изменения выполняются с помощью js? - PullRequest
3 голосов
/ 20 августа 2010

Я создал JavaScript AdoNetDataContext и создал из него DataView.Я использовал текстовые поля в шаблоне для столбцов таблицы.AdoNetDataContext может отслеживать изменения, если они были в текстовых полях, соответствующих используемым столбцам таблицы.Но мои изменения в текстовом поле сделаны через jquery.Дело в том, что datacontext не распознает, что произошли изменения, поэтому не может их зафиксировать.

В чем должна быть причина такого поведения и как мы можем решить эту проблему?Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 28 августа 2010

DataContext и, следовательно, AdoNetDataContext, как его производные, используют JavaScript самостоятельно, чтобы отслеживать и сообщать о реальных изменениях, оставаясь независимыми от данных.Они предназначены для работы с людьми, а не с другим кодом :-) Если вам нужно отправить данные из кода, вы можете сделать это прямо в веб-сервис JSON - вам вообще не нужно возиться с автоматически сгенерированным пользовательским интерфейсом.Практически все эти автоматически созданные элементы управления ASP.NET заключаются в том, что они предназначены для простых вещей, когда компания вообще не хочет заниматься пользовательским интерфейсом - подключи и играй: -)

Для вебаПользовательский интерфейс, который разрешает и даже предлагает изменения, которые вам нужно будет переключить на MVC.NET (также известный как ASP.NET MVC - ppl нравится много играть с именами: -)

1 голос
/ 25 августа 2010

Я не знаком с AdoNetDataContext / ASP, но похоже, что изменения, сделанные с помощью jQuery, не запускают события, которые он использует для обнаружения изменений в значениях текстового поля.

Предполагая, что это так, ваши варианты:

  1. Получить jQuery для запуска правильных событий
  2. Получите jQuery для запуска функций, специфичных для AdoNetDataContext, для принудительного распознавания изменений
  3. Получите AdoNetDataContext для прослушивания любых событий, запускаемых jQuery

.
Самый «правильный» вариант - № 1, ИМХО.

EDIT:
1. Получите jQuery для запуска основных событий ::

Существует функция jQuery, которая запускает события: http://api.jquery.com/trigger/

Согласно документации, что-то подобное должно работать (не проверено):

$('foo').trigger('change');

(Примечание: это предполагает, что AdoNetDataContext прослушивает событие 'onChange'. Если нет, вам нужно выяснить, что прослушивает и вместо этого вызывать эту функцию)

...