转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Web Application 開 發 利 器 - WebSnap(十三)         ★★★★

Web Application 開 發 利 器 - WebSnap(十三)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1798 更新时间:2009/4/23 18:40:45
<h3><%Producer.Write(''''我是 <#NameTag>'''')%></h3>

 

接 著 你 就 可 以 在 Producer 的 OnHTMLTag 事 件 中 取 代 這 個 Tag , 如 果 寫 入 的 資 料 不 是 HTML Tag 的 話 , 使 用 Response 會 較 有 效 率 。

 

13-10 Adapter 

標 準 的 AdapterWrapper , 指 的 是 TAdapter 或 是 TDataSetAdapter 等 , 她 提 供 了 Fields,Actions 兩 個 列 舉 器 , 我 們 可 以 經 由 她 們 列 出 AdapterFields 及 AdapterActions: 

<%

  adlist=new Enumerator(Application.Fields)

  s = ''''''''

  for (; !adlist.atEnd(); adlist.moveNext())

   {

     s+=''''<h3>''''+adlist.item().Name+''''</h3>''''

   }

  Response.Write(s)

%>

<%

  adlist=new Enumerator(Application.Actions)

  s = ''''''''

  for (; !adlist.atEnd(); adlist.moveNext())

   {

     s+=''''<h3>''''+adlist.item().Name+''''</h3>''''

   }

  Response.Write(s)

%>

當 一 個 網 頁 執 行 了 Action 後 發 生 錯 誤 導 向 錯 誤 網 頁 時 , 我 們 可 以 利 用 她 的 Errors 來 取 出   錯 誤 訊 息 : 

<%

   var e = new Enumerator(Modules.CountryTable.Adapter.Errors)

   for (; !e.atEnd(); e.moveNext())

   {

     Response.Write("<li>" + e.item().Message)

   }

    e.moveFirst()

%>

當 使 用 的 Adapter 有 多 筆 資 料 時 , 例 如 TDataSetAdapter 跟 之 前 我 們 所 撰 寫 的 MyAdapter , 我 們 可 以 利 用 Records  列 舉 器 來 移 動 記 錄 位 置 : 

<%var e = new Enumerator(vdsAdaptCust.Records)

   for (; !e.atEnd(); e.moveNext())

   { %>

      <tr>

<% if (vdsAdaptCust_Filter.Visible)

   { %>

      <td><div><% obj=CheckBoxGroup(vdsAdaptCust_Filter, vdsAdaptCust_Filter.InputName,

1, '''''''')%><%=obj.text%></div></td><% } %> 

你 可 以 在 AdapterGrid 中 所 產 生 的 Script 看 到 一 樣 的 運 用 方 式 , 當 你 把 AdapterGrid 的 AdapterMode 設 為 Edit 時 , 你 還 可 以 看 到 HiddenFields 及 HiddenRecordFields , 這 兩 個 Wrapper 可 以 將 Adapter 中 的 隱 藏 欄 位 用 WriteFields 寫 到 HTML 中 , 這 用 在 DataSetAdapter 上 , 你 可 以 在 AdaterAction 一 節 中 找 到 相 關 的 資 訊 , HiddenFields 及 HiddenRecordFields 中 的 資 訊 會 受 到 DataSetAdapterField 中 的 FieldFlags 特 性 值 的 影 響 , 就 像 是 以 往 我 們 熟 悉 的 UpdateFlag  一 樣 。 CanModify 及 CanView 則 是 權 限 控 制 的 部 份 , Mode 這 個 特 性 值 是 用 來 判 別 目 前 的 網 頁 所 處 的 狀 態 , 例 如 Edit,Insert,Query 等 DataSetAdapter 所 提 供 的 狀 態 , 技 術 上 你 可 以 用 撰 寫 元 件 的 方 式 定 義 自 己 的 AdapterMode 及 Adapter, 在 Inside WebSnap 中 有 一 個 這 樣 的 範 例 。

 

13-11 AdapterAction

   AdapterAction 的 Wrapper Object , 我 們 可 以 在 Grid Page 中 的 Script 看 到 以 下 的 Script: 

onclick="AdapterForm2.__act.value=''''<%=vAdapter1_Query.LinkToPage("Edit", "Error").AsFieldValue%>

 

這 會 編 出 以 下 的 HTML

__sp.4.Edit__fp.5.Error__id.19.Grid.Adapter1.Query

 

各 參 數 的 詳 細 用 途 請 參 考 AdapterAction 一 節 。 Style 特 性 值 與 AdapterAction 中 IGetHTMLStyle.GetDisplayType 相 呼 應 , 可 以 用 來 取 得 Action 的 顯 示 方 式 , 如 button,image,link 等 等 , Array 可 以 讓 我 們 列 出 該 Action 所 支 援 的 命 令 , 較 明 顯 的 範 例 是 PagedAdapter 的 GotoPage Script: 

<%

   // GotoPage has a list of commands.  Loop through the list.  Only use an anchor tag if the command

   //  is enabled

   if (vGotoPage.Array != null)

   {

     var e = new Enumerator(vGotoPage.Array)

     for (; !e.atEnd(); e.moveNext())

     {

%>

<td>

<%     if (vGotoPage.Enabled)

{ %>

<a href="<%=vGotoPage.LinkToPage(Page.Name).AsHREF%>">

<%=vGotoPage.DisplayLabel%></a>

<% }

else

{ %>

<a><%=vGotoPage.DisplayLabel%></a>  

<% }

%>

</td>

<%

}

}

%>

 

13-12 AdapterField 

  我 想 你 對 她 應 該 相 當 熟 悉 了 , InputName 這 個 特 性 值 有 個 技 術 是 很 重 要 的 , 你 只 要 比 對 TDataSetAdapter 與 TAdapter 所 產 生 出 來 的 HTML 就 可 以 了 解 到 她 跟 Records 有 很 大 的 牽 連 , 在 AdapterGrid 情 況 下 InputName 後 面 的 數 字 代 表 著 資 料 記 錄 位 置 , 當 AdapterGrid Post 之 後 , 這 些 值 就 會 被 送 往 Action , 接 著 我 們 就 可 以 利 用 ActionRequest 與 ActionFieldValues 來 取 出 這 些 值 , InputStyle 則 是 HTML Control 類 型 , DisplayType 與 AdapterAction.Style  作 用 相 同 , 只 是 對 象 是 Text,Image,List , ViewMode 是 顯 示 模 式 : Input 與 Display , DisplayText 與 EditText 則 是 AdapterField 的 值 , 通 常 在 顯 示 text 時 我 們 使 用 DisplayText , input 時 使 用 EditText , ValuesList 則 是 傳 回 AdapterField  中 ValueList 的 Wrapper Object 。

 

13-13 AdapterErrors 

  就 是 Adapter 的 錯 誤 資 訊 , 也 就 是 我 們 在 Adapter Wrapper Object 所 展 示 的 列 舉 錯 誤 真 正 的 物 件 。

 

<%

   var e = new Enumerator(Modules.CountryTable.Adapter.Errors)

   for (; !e.atEnd(); e.moveNext())

   {

     Response.Write("<li>" + e.item().Message)

   }

   e.moveFirst()

%>

 

13-14 AdapterFieldValues  

  這 用 在 AdapterField 支 援 Multi-Value 時 , 如 HTML List Control 等 多 選 值 情 況 下 , 目 前 是 TAdapterMultiValueField 。 你 可 以 用 以 下 的 程 式 碼 來 取 出 這 些 值 

var e = new Enumerator(f.Values.Records)

for (; !e.atEnd(); e.moveNext())

 {

    s+= ''''<li>''''

    s += f.Values.ValueField.DisplayText;

    s += ''''</li>''''

    c++

  }

e.moveFirst()

 

13-15 AdapterFieldValuesList 

 這 是 我 們 由 AdapterField.ValueList 所 傳 回 來 的 Wrapper Object , 使 用 方 式 大 略 與 上 面 那 一 個 相 同 , 不 過 多 加 了 可 傳 回 AdapterImage 的 能 力 與 直 接 用 Name 來 取 值 的 函 式 。

 

13-16 AdapterHiddenFields

 就 是 我 們 使 用 Adapter.HiddenFields 所 傳 回 來 的 Wrapper 物 件 。

 

13-17 AdapterImage

 使 用 AdapterField.Image 所 傳 回 來 的 Wrapper Object , 提 供 了 圖 形 的 URL 。

 

本章後記

 

WebSnap 中 的 Wrapper Object 大 概 就 是 這 些 , 我 本 來 不 想 將 這 些 列 出 來 的 , 因 為 這 些 東 西 在 更 新 的 Help 檔 中 有 詳 細 的 說 明 及 範 例 檔 , 只 是 有 部 份 蠻 模 糊 的 , 因 此 我 決 定 就 一 些 會 造 成 疑 問 的 部 份 說 明 , 請 你 參 照 著 On-Line Help 看 , 會 有 較 完 整 的 認 識 。

 

<附錄A、 一些小技巧>

上一页  [1] [2] 


[聊天工具]Gmail推出新功能:Web Clip__天极Yesky  [聊天工具]Web MSN你玩了吗__天极Yesky
[系统软件]Web Browser Express 概述  [系统软件]对Internet Explorer Web 控件做一点修改
[常用软件]小技巧:三步实现Web迅雷录制PPLive节目  [常用软件]天网防火墙:打开WEB和FTP服务
[VB.NET程序]使用VB.Net做一个配置web.config功能的WinForm(原…  [VB.NET程序]vb.net控件、web service简述
[VB.NET程序]使用vbscript脚本调用web服务  [VB.NET程序]*** Web 存储系统窗体:窗体注册表 (new)***
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台