ASP.NET密技集錦(C#)-I (N )

Similar documents
untitled

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

untitled

untitled

untitled

untitled

第一章 章标题-F2 上空24,下空24

基于ECO的UML模型驱动的数据库应用开发1.doc

untitled


untitled

IsPostBack 2

T-SQL指令快速入門(七)—WHILE的使用(S )

圖 1 ASP.NET 與 VFP 8.0 應用系統之間的 XML 傳遞架構 2

投影片 1

untitled

VB控件教程大全

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

认定编号

信息

第七章

Outlook 2007 設定說明 Offic 企業郵件 / 虛擬主機郵件 / Office 365

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

天津天狮学院关于修订2014级本科培养方案的指导意见

计算机软件技术专业教学计划

Outlook 2010 設定說明 Offic 企業郵件 / 虛擬主機郵件 / Office 365

untitled

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

Chapter 16 集合

Microsoft Word - Ch06.docx

WS_With_ASP.ppt

投影片 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

爱玩科技合作白皮书(2011)

CU0594.pdf

Microsoft PowerPoint - VB14.ppt

Microsoft Word - ch04.doc

「西醫基層總額支付委員會《第28次委員會議紀錄

2016 勒索軟體白皮書

Microsoft Word 级第二专业学士学位培养计划.doc

臺銀人壽「98年九至十一職等人員甄試」

untitled

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas

NIIT APP T ECH,,,,,, C++ : C++, C++,,, C++,,,,, : ,,,, ;,, ( CIP) C++ /,,. :, (21.) ISBN C..

進階搜尋引擎.doc

投影片 1

天仁期末個人報告1.PDF

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

大连软~1

Microsoft Word - 澎湖田調報告-宏達組9804.doc

平 凡 足 迹 李 本 川 作 者 为 中 国 科 学 院 海 洋 研 究 所 研 究 员,1935 年 生, 山 东 荣 成 人 我 今 年 63 岁 了 大 前 年 丈 夫 和 儿 子 在 一 个 月 内 先 后 离 开 了 人 世, 女 儿 又 已 出 嫁, 现 在 是 孑 然 一 身 我 是

今天 年春季号 总 92 期

*

( ) / / / / / / /

(Microsoft Word - 8\244T\244\362\277\337\272]\244W\265L\246W.doc)

Microsoft Word - 專家本色 doc


但, 你 应 该 听 过 我 们 走 在 大 路 上 这 首 歌, 或 许 还 知 道 革 命 人 永 远 是 年 轻 那 支 歌 ; 并 且, 几 乎 可 以 肯 定, 你 在 戴 红 领 巾 的 那 阵, 必 然 唱 过 牛 儿 还 在 山 坡 吃 草, 放 牛 的 却 不 知 道 哪 儿 去

2 临 终 助 念 答 问 序 临 终 关 怀, 由 佛 门 净 宗 古 来 祖 师 大 德 提 倡 助 念 往 生, 现 今 已 渐 为 社 会 大 众 所 重 视, 在 台 湾, 台 大 长 庚 等 各 大 医 院, 也 都 设 有 助 念 室 ; 大 陆 上 许 多 道 场, 也 有 专 为

校园之星

<4D F736F F F696E74202D FA8BEA861B8EAB7BDBEE3A658BB50C0B3A5CE28B773A6CBA5AB29>

之 原 則 及 國 防 部 訂 頒 國 軍 列 管 國 有 不 動 產 提 供 非 軍 方 單 位 使 用 處 理 原 則 規 定 不 符, 仍 應 以 出 租 方 式 辦 理 惟 可 就 偏 遠 地 區 提 供 官 兵 金 融 水 電 服 務 使 用 部 分, 研 議 降 低 租 金 標 準, 報

chineseall

釋禪波羅蜜次第法門

证券代码: 证券简称:锦江股份 公告编号:【】

1700 装 卸 搬 运 7645 装 卸 搬 运 服 务 2100 建 筑 7410 工 程 服 务 11% 装 卸 搬 运 服 务, 是 指 使 用 装 卸 搬 运 工 具 或 者 人 力 畜 力 将 货 物 在 运 输 工 具 之 间 装 卸 现 场 之 间 或 者 运 输 工 具 与 装 卸

前 言 教 育 无 小 事, 它 成 就 着 学 生 的 未 来 作 为 教 师, 他 们 无 时 无 刻 不 在 关 注 着 学 生 的 成 长 学 生 的 未 来 学 生 就 像 一 朵 含 苞 待 放 的 花 朵, 需 要 老 师 们 的 细 心 呵 护, 给 学 生 需 要 的 东 西, 而

《盗墓笔记》 南派三叔/著

<CFFBB7D1D5DFD0D0CEAAD1A72E6D7073>

独立学院建设与发展



1. 2. Flex Adobe 3.

封面-12

Microsoft Word - 书目文件.doc

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

<4D F736F F D C4EAB8DFB5C8D1A7D0A3BEABC6B7BDCCB2C4E5E0D1A1BDE1B9FB2E646F63>

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

使用手冊

IT认证(三)

Visual C# 2010 與 UML 開發實戰 C# 第 5 章物件導向基礎 C# C# 第 6 章資料與變數 C# 第 7 章判斷式與迴圈 C# 第 8 章陣列與集合 C# 第 9 章偵錯與例外狀況處理 Visual Studio 2010 C# try...catch ix

投影片 1

untitled

MVB-1001.DOC

Microsoft PowerPoint - ASP_NET_04

untitled

2 ADO.NET Internet 1.2

Web Form 表單與事件處理

(Microsoft PowerPoint -

多層次傳銷與獎金系統

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

ASP.NET实现下拉框二级联动组件

助 理 建 筑 师 / 建 筑 师 ( 方 案 ) 1 重 点 院 校 建 筑 学 本 科 及 以 上 毕 业,1-3 年 甲 级 设 计 院 工 作 经 验, 有 优 秀 的 方 案 设 计 能 力 及 成 果 表 现 能 力 ; 2 热 爱 设 计 敬 业 负 责 积 极 主 动 有 良 好 的

Chapter V.S. PC

Transcription:

ASP.NET 密技集錦 (C#)-I 2002 年 11 月號 作者 : 許嘉仁審稿 : 許薰尹文章編號 :N021101002 Server Control 使用 Client 端 Script 難易度 : 易 相關資源與開發工具 : 1. Visual Studio.NET 2. ASP.NET 3. C#.NET 難 Server Control 的好用, 大家都很清楚了, 但是結合 Client 端 Script 在 Web 開發上又有其必要性, 在這介紹幾個好用的結合方式 要做到的功能是當使用者點選這個按鈕時, 先跳出確認的對話視窗, 如圖 1: 發行人 : 劉致宏 總 主 編 : 張智凱 編 : 許薰尹 社務顧問 : 邱世萍技術編輯 : 張書源許嘉仁編輯顧問 : 鄭淑芬胡百敬楊先民羅慧真美術設計 : 魏吉芝陳昀行銷企劃 : 曹雅瑩陳秀慧發行服務 : 謝佩珊劉清滿發行所 : 毅達行銷顧問股份有限公司客戶服務 :service@netmag.com.tw 圖 1:UseScript_1.aspx 範例 使用者如果點選 Cancel 則取消這個動作, 如果點選 OK 則在頁面印出 您按了 Button1, 如圖 2 本電子刊物之所載標誌名稱分屬各該公司所有, 非經授權請勿轉載使用, 版權所有 如經查證依法律追訴 1

圖 2:UseScript_1.aspx 範例 一般 Client 端 Script 要結合 Server Control 可以直接在 Server Control 的標籤內寫即可, 例如滑鼠移到按鈕上, 按鈕的背景顏色改變成紅色, 只要 2

直接在 Server Control 的標籤內加上事件即可, 如下 : <asp:button id="button1" Text="Button" onmouseover="this.style.backgroundcolor='red'" runat="server" /> 但是如果要做到這個範例的功能所遇到的最大問題是 OnClick 事件已經被 Server 端用掉了, 如下列語法的 OnClick 事件會去執行 Server 端的程式碼 : <asp:button id="button1" Text="Button" Onclick="Afunction" runat="server" /> 那如何加入 Client 端的 OnClick 事件呢? 最常見的做法在網站討論區已經有網友 Post 出來 首先使用 VS.NET 建立一個網頁 UseScript_1.aspx, 在頁面設計視窗拖曳一個 Button 控制項, 然後要要幫這個按鈕加上 Client 端 Script 加入以下程式: private void Page_Load(object sender, System.EventArgs e) Button1.Attributes["onclick"]="javascript:return confirm(' 你確定要按嗎?')"; private void Button1_Click(object sender, System.EventArgs e) Response.Write(" 你按了 Button1"); 也就是讓網頁載入時動態在按鈕上加入 OnClick 事件以及 Client 端 Script 如果讀者的 Client 端 Script 不是簡單的幾行程式, 也可以改成呼叫函式, 例如現在要做的功能是頁面有一個 TextBox 和一個 Button, 當使用者點選按鈕, 如果 TextBox 的值是空的就提示使用者並取消點選按鈕事件, 如圖 3: 3

圖 3:UseScript_2.aspx 範例 如果使用者有輸入值, 則在頁面中印出使用者所輸入的值, 如圖 4: 圖 4:UseScript_2.aspx 範例 UseScript_2.aspx 範例要先加入 Client 端 Script 函式, 如圖 5: 4

圖 5:UseScript_2.aspx Client 端函式 UseScript_2.aspx 範例的 Server 端程式碼如圖 6: 圖 6:UseScript_2.aspx.cs 程式碼 同樣是動態加入 OnClick 事件來完成 Client 端 Script 的工作, 不過還有第三種更好的方式, 不用寫 Server 端的程式碼, 利用下列程式碼一樣可以達 5

到同樣功能, 如圖 7: 圖 7:UseScript_3.aspx.cs 程式碼 同時修改多筆資料 一般資料的修改會以修改模式和瀏覽模式切換, 一次修改一筆以及儲存一筆, 有些人需要同時修改多筆並同時儲存多筆,ASP.NET 預設提供的控制項沒有這種功能, 但是可以模擬這種功能 首先在頁面中放入三個 Button 控制項和兩個 DataList 控制項, 將 儲存 和 取消 按鈕及第二個 DataList 控制項的 Visible 屬性設為 false, 也就是先隱藏, 如圖 8: 6

圖 8:MultiEdit_1.aspx 頁面設計 然後先取得 SQL Server 的 Pubs 資料庫的 Jobs Table 的 job_id job_desc 欄位的資料, 也就是取得 DataSet, 然後編輯兩個 DataList 控制項的 Header Template, 各放入兩個 Label 控制項, 第一個 Label 控制項的寬度設死為 100px, 這是為了美觀, 如圖 9: 圖 9:MultiEdit_1.aspx 頁面設計 設定完兩個 DataList 控制項的 DataSource 屬性以及 DataMemeber 屬性, 利用 AutoFormat 美化一下控制項 然後繼續編輯其 ItemTemplate, 第一個 DataList 控制項放入兩個 Label 控制項, 一個繫結 job_id 欄位, 一個繫結 job_desc 欄位 第二個 DataList 控制項放入一個 CheckBox 控制項 一個 Label 控制項和 7

一個 TextBox 控制項,Label 控制項繫結 job_id 欄位,TextBox 控制項繫結 job_desc 欄位 兩個 DataList 控制項的第一個 Label 控制項寬度都設為 100px, 還是為了美觀 簡單來說, 所有設定都一樣, 只有繫結的控制項不同, 如圖 10: 圖 10:MultiEdit_1.aspx 頁面設計 接下來加入下列程式碼就能展現資料 : private void Page_Load(object sender, System.EventArgs e) if (!IsPostBack) BindList1(); private void BindList1() Button1.Visible=true; Button2.Visible=false; Button3.Visible=false; DataList1.Visible=true; DataList2.Visible=false; sqldataadapter1.fill(dsjobs1); DataList1.DataBind(); 展現結果如圖 11: 8

圖 11:MultiEdit_1.aspx 當使用者點選 修改 按鈕, 每一筆資料都要展現成 TextBox, 只要將 DataList1 隱藏,DataList2 展現即可, 這就是筆者所謂的模擬, 加入以下程式碼 : private void Button1_Click(object sender, System.EventArgs e) BindList2(); private void BindList2() Button1.Visible=false; Button2.Visible=true; Button3.Visible=true; DataList1.Visible=false; DataList2.Visible=true; sqldataadapter1.fill(dsjobs1); DataList2.DataBind(); 結果如圖 12: 9

圖 12:MultiEdit_1.aspx 取消 按鈕的功能比較簡單, 加入下列程式碼即可 : private void Button3_Click(object sender, System.EventArgs e) BindList1(); 這樣就能回到瀏覽模式, 最難的部分在於判斷哪幾筆資料被修改過了, 在這邊又要利用到 Client 端 Script 的技巧, 還記得前面沒用到的 CheckBox 控制項, 這是筆者用來記錄被修改過的資料是哪幾筆用的 切換到 HTML 編輯視窗, 將 DataList2 的 TextBox 控制項加入以下語法 : <asp:textbox id=textbox1 runat="server" onchange="javascript:this.parentelement.children(0).checked= true;" Text='<%#DataBinder.Eval(Container, "DataItem.job_desc")%>' Width="300px"> </asp:textbox> 此時測試網頁, 會發現只要修改 TextBox 的值, 在 LoseFocus 的時候 CheckBox 就會自動打勾, 也就是修改過這筆資料的意思 如圖 13: 10

圖 13:MultiEdit_1.aspx 最後當然要想辦法抓出哪幾筆資料被修改過, 並批次寫回資料庫, 在 儲存 按鈕的 Click 事件加入下列程式碼 : private void Button2_Click(object sender, System.EventArgs e) sqlconnection1.open(); SqlCommand cmd=new SqlCommand("update jobs set job_d esc=@job_desc where job_id=@job_id", sqlconnection1); cmd.parameters.add(new SqlParameter("@job_id",SqlDbType. SmallInt,2)); cmd.parameters.add(new SqlParameter("@job_desc",SqlDbTyp e.varchar,50)); foreach (DataListItem item in DataList2.Items) CheckBox cb=(checkbox)item.controls[1]; if (cb.checked) Label lbl=(label)item.controls[3]; TextBox txt=(textbox)item.controls[5]; cmd.parameters["@job_id"].value=lbl.text; 11

cmd.parameters["@job_desc"].value=txt.text; cmd.executenonquery(); sqlconnection1.close(); BindList1(); 透過迴圈依序抓出 CheckBox Label 和 TextBox 控制項, 經過轉型後取出裡面的值然後判斷是否有被修改, 如果有就批次寫入資料庫, 沒有就回到 瀏覽模式了 測試結果如圖 14 15: 測試範例 圖 14:MultiEdit_1.aspx 12

圖 15:MultiEdit_1.aspx 結語 : 在這篇文章中介紹兩個應用技巧, 動作不是很困難, 亦不難懂, 會活用才是 重要 希望能為讀者帶來幫助 相信以同樣的做法, 也可以在 Repeater 和 DataGrid 控制項當中來做到同樣的功能 許嘉仁 13 現任恆逸資訊教育訓練處技術副理, 擁有 MCSD 等認證, 熟悉 Web Application 開發, DHTML,COM+ 元件設計 關聯式資料庫系統分析與設計 電子商務相關技術,XML 應用程式開發,C# 與 ASP.NET 技術開發以及.NET 相關技術研究, 並為技術書籍作者及雜誌專欄作家