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

Web Application 開 發 利 器 - WebSnap(三)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2957 更新时间:2009/4/23 18:41:24
p 上 按 右 鍵 選 擇 Add Command 選 項 來 新 增 一 個 Apply 按 紐

 

 

到 這 裡 為 止 我 們 已 經 完 成 了 一 個 編 修 資 料 的 網 頁 , 接 著 我 們 希 望 在 Grid 網 頁 每 筆 資 料 的 後 面 加 上 一 個 按 紐 連 結 到 這 個 編 修 的 網 頁 , 因 此 我 們 回 到 Grid Module 中 開 啟 Visual Page Designer 視 窗 , 在 AdapterGrid 元 件 上 按 右 鍵 選 擇 新 增 一 個 AdapterCommandColumn 元 件 。

 

 

完 成 之 後 你 應 該 可 以 看 到 在 每 筆 資 料 的 後 面 顯 示 許 多 的 按 紐 , 這 個 範 例 中 我 們 只 需 要 Edit 按 紐 就 可 以 了 , 請 在 AdapterCommandColumn 上 按 右 鍵 選 擇 新 增 一 個 Edit 按 紐 。

 

 

完 成 後 你 可 以 在 每 筆 資 料 的 最 後 一 欄 看 到 這 個 按 紐 , 同 時 你 也 可 以 使 用 視 窗 上 的 Move Up 按 紐 來 調 整 她 的 顯 示 位 置 。

 

 

然 後 我 們 要 設 定 當 使 用 者 按 下 這 個 按 紐 後 的 動 作 , 這 裡 我 們 只 需 要 她 連 往 Edit Page 就 可 以 了 , 我 們 可 以 利 用 設 定 PageName 特 性 值 來 達 到 這 個 目 的 。

 

 

我 們 希 望 能 夠 讓 使 用 者 在 編 修 網 頁 中 按 下 Apply 按 紐 後 , 自 動 回 到 Grid 網 頁 中 , 這 可 以 經 由 設 定 Apply 按 紐 的 PageName 特 性 值 為 Grid 來 完 成 。

OK! 大 功 告 成 , 接 著 執 行 程 式 來 看 看 我 們 的 成 果 吧 !

 

 

不 幸 的 是 , 當 你 修 改 了 資 料 後 按 下 Apply 按 紐 時 , 你 會 得 到 這 個 錯 誤 :

 

 

這 是 因 為 WebSnap 中 使 用 Variant 來 比 對 資 料 , 這 個 動 作 可 能 會 引 發 型 別 轉 換 上 的 例 外 , 而 我 們 是 在 Debuger 狀 態 下 執 行 程 式 , 因 此 例 外 就 被 DELPHI 所 攔 截 下 來 了 , 這 並 不 會 影 響 資 料 的 儲 存 動 作 , 因 為 WebSnap 中 完 整 的 處 理 了 這 個 例 外 , 當 型 別 轉 換 例 外 發 生 時 視 同 值 已 被 改 變 , 請 你 按 下 F9 讓 程 式 繼 續 執 行 就 可 以 了 。

 

在 網 頁 程 式 中 編 修 資 料 通 常 會 遇 到 一 些 困 難 , 例 如 資 料 的 預 先 驗 證 或 是 格 式 的 限 定 等 , 這 些 問 題 目 前 在 WebSnap 中 並 沒 有 太 多 的 支 援 , 例 如 沒 有 現 成 的 元 件 可 以 把 日 期 拆 成 三 個 輸 入 欄 位 , 也 不 能 夠 使 用 Client-side Script 來 驗 證 空 欄 位 。 雖 然 你 可 以 利 用 PageProducer 加 上 手 動 調 整 Script 來 達 到 這 個 效 果 , 但 這 還 是 不 夠 直 覺 。 這 些 問 題 我 會 在 後 面 的 章 節 中 提 出 一 些 解 決 方 法 。 現 在 讓 我 們 繼 續 加 強 我 們 的 範 例 程 式 , 我 們 希 望 能 讓 使 用 者 使 用 ComboBox 的 方 式 來 選 取 國 家 , 要 達 到 這 個 效 果 我 們 必 須 在 Data Module 中 加 入 一 個 Country 資 料 庫 , 接 著 在 Edit Module 加 入 一 個 TDataSetValueList 元 件 連 結 這 個 資 料 庫 。

 

 

接 著 我 們 要 設 定 在 DataSetAdapter 中 的 Country 欄 位 的 ValueList 特 性 值 。

 

 

完 成 後 開 啟 Visual Page Designer 就 可 以 看 到 Country 已 經 變 成 一 個 ComboBox 了 。

 

 

很 簡 單 不 是 嗎 ? 如 果 你 的 資 料 來 源 不 是 資 料 庫 的 話 , 那 你 可 以 把 TDataSetValueList 換 成 TStringsValueList , 這 樣 你 就 可 以 自 訂 ComboBox 中 的 Items 了 , WebSnap 中 有 許 多 的 HTML Control 可 以 選 擇 , 你 可 以 自 己 試 試 看 。

 

 3-3 、 資 料 搜 尋 及 錯 誤 處 理

 

在 結 束 這 一 章 之 前 , 讓 我 們 來 個 練 習 題 , 你 能 不 能 在 Grid 上 方 加 上 一 個 Edit 與 一 個 按 紐 , 讓 使 用 者 填 入 CustNo 後 按 下 那 個 按 紐 跳 往 Edit 網 頁 呢 ? 結 合 計 算 機 及 這 一 節 的 範 例 中 的 知 識 應 該 足 夠 你 完 成 這 個 工 作 了 。 至 於 搜 尋 資 料 的 部 份 我 們 可 以 使 用 兩 種 方 式 來 做 , 一 種 是 直 接 使 用 DataSet , 另 一 種 是 使 用 TDataSetAdapter 的 Locate Method , 我 建 議 你 使 用 後 者 :

 

procedure TGrid.QueryExecute(Sender: TObject; Params: TStrings);

var

  LocateParams:TLocateParams;

begin

  //use dataset

  //wdmData.Table1.Open;

  //wdmData.Table1.Locate(''''CustNo'''',AdaptEnterCustNo.ActionValue.Values[0],[]);

  //use dataset Adapter

  LocateParams:=dsAdaptCust.LocateParamsList.Add;

  LocateParams.AddParam(''''CustNo'''',AdaptEnterCustNo.ActionValue.Values[0]);

  LocateParams.AdapterName:=dsAdaptCust.Name;

  dsAdaptCust.Locate;

end;

 

那 當 使 用 者 輸 入 的 資 料 在 資 料 庫 中 找 不 到 時 要 如 何 處 理 呢 ? 你 有 兩 種 選 擇 , 一 種 是 直 接 引 發 一 個 例 外 , WebSnap 會 把 例 外 顯 示 在 網 頁 中 :

 

 if not dsAdaptCust.Locate then

   raise Exception.Create('''' 資 料 不 存 在 !'''');

 

另 外 一 種 方 法 是 設 定 Adapter.Errors 特 性 值 來 標 示 失 敗 , 再 設 定 ActionButton 中 的 ErrorPageName 導 向 特 定 的 網 頁 :

 

if not dsAdaptCust.Locate then

   Adapter1.Errors.AddError('''' 資 料 不 存 在 '''');

 

在 檔 案 中 的 範 例 程 式 內 實 作 了 這 兩 種 方 法 , 你 可 以 按 照 你 的 需 求 來 選 擇 。

  

3-4 AdapterErrorList 元 件

 

 我 們 也 可 以 利 用 AdapterErrorList 元 件 來 顯 示 錯 誤 資 訊 給 使 用 者 , 請 在 這 個 Page Module 中 開 啟 Visual Page Designer , 並 在 AdapterForm1 中 加 入 一 個 AdapterErrorList 元 件 :

 

 

接 著 使 用 Move Up 按 紐 將 這 個 元 件 移 到 AdapterForm 的 最 上 層 :

 

然 後 設 定 她 的 Adapter 為 Adapter1 。

 

 

接 著 我 們 就 可 以 來 測 試 一 下 結 果 了 , 在 做 測 試 之 前 , 請 將 Query Action 的 OnExecute 事 件 程 式 修 改 成 下 面 的 樣 子 :

 

procedure TGrid.QueryExecute(Sender: TObject; Params: TStrings);

var

  LocateParams:TLocateParams;

begin

  //use dataset

{  wdmData.Table1.Open;

  wdmData.Table1.Locate(''''CustNo'''',AdaptEnterCustNo.ActionValue.Values[0],[]) then}  //use dataset Adapter

  LocateParams:=dsaCust.LocateParamsList.Add;

  LocateParams.AddParam(''''CustNo'''',AdaptEnterCustNo.ActionValue.Values[0]);

  LocateParams.AdapterName:=dsaCust.Name;

  //use exception

{  if not dsaCust.Locate then

     raise Exception.Create('''' 資 料 不 存 在 !'''');}

  //use errorlist

  if not dsaCust.Locate then

     Adapter1.Errors.AddError('''' 資 料 不 存 在 !'''');

end;

 

當 你 輸 入 一 個 不 正 確 的 值 後 , 你 會 得 到 下 面 這 個 顯 示 畫 面 。

 

 

如 果 你 希 望 由 另 一 個 網 頁 來 顯 示 錯 誤 的 話 , 你 可 以 設 定 這 個 Action 的 ErrorPageName 成 為 該 Error Page 的 名 稱 , 並 且 在 Error Page 網 頁 中 加 入 AdapterForm-AdapterErrorList , 接 著 設 定 AdapterErrorList 為 Adapter1 即 可 。

  

3-5 WebSnap 中 的 網 頁 重 導 功 能

 

這 一 節 我 們 討 論 了 如 何 在 WebSnap 中 處 理 資 料 庫 , 如 何 以 CSS 改 變 網 頁 的 外 觀 , 及 如 何 處 理 錯 誤 與 操 作 TDataSetAdapter 。 你 應 該 注 意 到 我 使 用 了 兩 個 不 同 的 TDataSetAdapter 來 連 結 同 一 個 DataSet , 這 樣 做 的 目 的 是 我 們 以 後 還 可 以 將 Edit 網 頁 修 改 成 不 單 單 只 有 Apply 功 能 的 完 整 編 修 網 頁 。 如 果 你 的 目 的 只 是 要 讓 使 用 者 只 使 用 Apply 功 能 的 話 , 那 你 可 以 將 TDataSetAdapter 放 至 在 WebDataModule 中 或 是 Grid Page Module 中 , 並 在 Edit Module 的 BeforeDispatcher 事 件 中 判 別 使 用 者 是 直 接 進 入 這 個 網 頁 或 是 經 由 Grid Page Module 中 的 Action 進 入 的 。 如 果 是 直 接 進 入 的 話 , 將 使 用 者 導 回 Grid 網 頁 :

 

uses WebReq, WebCntxt, WebFact, Variants, udmData,AdaptReq,SiteComp;

function Edit: TEdit;

 begin

      

上一页  [1] [2] [3]  下一页


[聊天工具]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……
    咸宁网络警察报警平台