File: ...\Samples\Solution\Toledo\CAXML.scx

Этот пример показывает как создать курсор из XML DataSet с помощью классов CursorAdapter и XMLAdapter и как связать данные с  элементами на форме.

Для того, чтобы увидеть изменения в XML DiffGram

  • Сделайте изменения в grid и щелкните на Show DiffGram.

Для того, чтобы чтобы посмотреть значение свойств CursorAdapter

  • Щелкните на Show CursorAdapter Properties.

Для получения более подробной информации о CursorAdapter и XMLAdapter, смотрите CursorAdapter Class и XMLAdapter Class.

Загрузка XML в Cursor

В этом примере метод LoadXML объекта XMLAdapter загружает XML DataSet в объект XMLAdapter и работает с объектом CursorAdapter для создания курсора. Загрузка XML DataSet в XMLAdapter создает объекты XMLTable в коллекции XMLAdapter Tables соответствующие таблицам в XML DataSet. Свойство CursorAdapter SelectCmd устанавливается в объект XMLTable, который вы желаете отобразить. Курсор создается, когда вызывается метод CursorFill на объекте CursorAdapter.

Для получения более подробной информации смотрите LoadXML Method, XMLTable Class и CursorFill Method.

Этот пример использует ADO.NET DataSet как XML файл, на такой такой файл может быть сгенерирован Visual FoxPro, как XML DataSet.

Для загрузки XML DataSet в объект XMLAdapter

  1. В событии Init формы примера, добавьте свойство, которое представляет собой объектную ссылку на XMLAdapter, либо с помощью использования дизайнеров форм или классов или с помощью метода AddProperty непосредственно в коде:

      CopyCode imageСкопировать код
    ThisForm.AddProperty('oXMLAdapter',CREATEOBJECT('XMLAdapter'))
  2. Для создания коллекции таблиц Tables в объекте XMLAdaptert, загрузите XML файл так, как это показано в приведенном ниже фрагменте кода:

      CopyCode imageСкопировать код
    WITH ThisForm.oXMLAdapter
    .LoadXML(ThisForm.cRunPath+'getcustomers.xml',.T.)
    ENDWITH
  3. Установите свойство CursorAdapter.SelectCmd на объект XMLTable и вызовите метод CursorAdapter.CursorFill:

      CopyCode imageСкопировать код
    ThisForm.DataEnvironment.cursor1.SelectCmd= ;
    "ThisForm.oXMLAdapter.Tables.Item(1)"
    ThisForm.DataEnvironment.cursor1.CursorFill()

Для просмотра свойств объекта CursorAdapter, посмотрите на объект DataEnvironment. Вы можете открыть дизайнер DataEnvironment путем правого клика на объекте CursorAdapter и выборкой опции Builder. Свойства CursorAdapter будут установлена построителем CursorAdapter'а.

Для получения более подробной информации смотрите DataEnvironment Object, Init Event и CursorAdapter Builder.

Управление привязкой данных

В момент, когда обычно происходит привязка данных, курсор, содержащий данные еще не существует. Это происходит потому, что объект XMLAdapter загружает XML в событии Init формы, которое происходит после привязки данных по умолчанию. Однако, вы можете управлять привязкой данных соответствующей установкой свойства Form BindControls.

В этом примере, свойство формы BindControls установлено в  False (.F.). После того, как метод CursorFill объекта CursorAdapter  создаст курсор, содержащий данные, BindControls устанавливается в True (.T.). Вы можете затем привязать элементы на форме с помощью приведенного ниже фрагмента кода:

  CopyCode imageСкопировать код
ThisForm.BindControls = .T.

Для получения более подробной информации смотрите BindControls Property.

Generating XML DiffGrams with the XMLAdapter

Для генерации XML DiffGram, используйте метод ToXML объекта XMLAdapter , как это показано в событии  cmdDiffgram.Click приведенного примера:

  CopyCode imageСкопировать код
WITH ThisForm.oXMLAdapter
.ReleaseXML(.F.) && Осовобождает XML документ, но сохраняет схему.
.UTF8Encoded = .T. && Показывает International символы.
.IsDiffgram = .T. && Генерирует XML DiffGram.
llIncludeBefore = .T. && Включает формат <diffgram:before>.
llChangesOnly = .T. && Генерирует только сделанные изменения.
llIsFile = .F. && XML является переменной памяти.
lcSchemaLocation = "" && Генерирует внутреннюю схему.
.ToXml("lcXML",lcSchemaLocation,llIsFile,llIncludeBefore,llChangesOnly)
ENDWITH

Смотрите также