
此案例研究演示了如何构建一个完整的 AppML 互联网应用程序具有针对数据库中的若干表进行信息列举、编辑和搜索的功能。应用程序模型在本章中我们将为数据库中的 Customers 表建立一个完整的应用程序模型。AppML 过滤器如需允许过滤 AppML 数据只需简单地向模型添加一个 filters 元素实例filtersqueryfield labelCustomerCustomerName/fieldfieldCity/fieldfieldCountry/field/queryorderfield labelCustomerCustomerName/fieldfieldCity/fieldfieldCountry/field/order/filters如需全面了解请参阅 AppML 参考手册。AppML 更新如需允许更新 AppML 数据只需简单地向模型添加一个 update 元素实例updateitemnameLastName/name/itemitemnameFirstName/name/itemitemnameBirthDate/name/itemitemnamePhoto/name/itemitemnameNotes/name/item/update且向 database 元素添加一个 maintable 和 keyfield 元素实例maintableCustomers/maintablekeyfieldCustomerID/keyfield如需全面了解请参阅 AppML 参考手册。AppML 安全您可以通过向 AppML 标签添加一个 security 属性来很容易地为 AppML 模型添加安全。实例appmlsecurityadmin在上面的实例中只有用户登录成为用户组 admin 的会员才能访问模型。如需为 update 元素设置安全只需简单地向 update 元素添加一个 security 属性实例updatesecurityadminitemnameLastName/name/itemitemnameFirstName/name/itemitemnameBirthDate/name/itemitemnamePhoto/name/itemitemnameNotes/name/item/update完整的 Customers 模型在本章中我们将为数据库中的每个表设立一个应用程序模型。创建一个名为 Models 的新文件夹。在 Models 文件夹中为每个应用程序创建一个模型。模型Customers.xmlappml securitydatasourcedatabaseconnectionDemo/connectionmaintableCustomers/maintablekeyfieldCustomerID/keyfieldsqlSELECT * FROM Customers/sqlorderbyCustomerName,City,Country/orderby/database/datasourcefiltersqueryfield labelCustomerCustomerName/fieldfieldCity/fieldfieldCountry/field/queryorderfield labelCustomerCustomerName/fieldfieldCity/fieldfieldCountry/field/order/filtersupdate securityadminitemnameCustomerName/name/itemitemnameContactName/name/itemitemnameAddress/name/itemitemnamePostalCode/name/itemitemnameCity/name/itemitemnameCountry/name/item/update/appml模型视图创建一个模型视图把它保存为 Demo_Model.html并尝试一下视图Demo_Model.htmh1Customers/h1div idList01/divscript srcappml.js/scriptscriptcustomersnew AppML(appml.htmlx,Models/Customers);customers.run(List01);/script尝试一下 »现在把所有的合并在一起然后通过少量 JavaScript 编码为所有模型创建一个测试页面Demo_Model_Views.htm!DOCTYPE htmlhtmlheadlink relstylesheet hrefappml.css //headbodyh1Demo Applications/h1button onclickmyOpen(Customers)Customers/buttonbutton onclickmyOpen(Products)Products/buttonbutton onclickmyOpen(Suppliers)Suppliers/buttonbutton onclickmyOpen(Shippers)Shippers/buttonbutton onclickmyOpen(Categories)Categories/buttonbutton onclickmyOpen(Employees)Employees/buttonbutton onclickmyOpen(Orders)Orders/buttonbutton onclickmyOpen(OrderDetails)OrderDetails/buttonbrbrdiv idPlace01/divscript srcappml.js/scriptscriptfunction myOpen(pname){var app_objapp_objnew AppML(appml.php,Models/ pname);app_obj.run(Place01);}/script/body/html