惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 司徒正美
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
月光博客
月光博客
量子位
大猫的无限游戏
大猫的无限游戏
Stack Overflow Blog
Stack Overflow Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
P
Proofpoint News Feed
B
Blog RSS Feed
美团技术团队
腾讯CDC
C
Check Point Blog
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
Recent Announcements
Recent Announcements
J
Java Code Geeks
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享

博客园 - 凯锐

旋转的Silverlight文字 面试.NET高级软件工程师 C#利用批处理实现正在运行的程序自动更新 WindowsXp下安装Ubuntu8.10 英语学习者的十句经典名言 Crystal Report動態顯示圖片 基於IIS的WCF的分布式多層架構開發實現 ASP.net 網站和Web Application的區別(轉) Word2003中進行目錄排版 Asp.net動態添加控件 SmartGridView(VB) C#/VB.NET语法的比较 我也来试一下利用word2007发布blog WinForm下多层架构的实现 從無到有實現一個xml數據庫登錄驗証 看完越獄20件必須懂的東西(轉) 在SQL 2000中交叉表的應用 產生指定個數的不重復隨機數 DIY网站的方法 - 凯锐 - 博客园
利用.NET代碼實現點擊按鈕彈出新窗體,輸入數據后返回並刷新頁面
凯锐 · 2007-10-09 · via 博客园 - 凯锐

      利用.NET代碼實現點擊按鈕彈出新窗體,輸入數據后返回並刷新頁面,網上大部份都是JavaScript實現,為使用方便,本人將其封裝進一段.NET代碼中。只所以稱作.net代碼,是因為C#/VB各一份嘍:)
     也是因為自己的項目中要用到一項類似於Winform的Messagebox.ShowDialog這樣的功能,起初以為跟Winform差不了多少的,誰知做的時候卻出現了很多"難以預料"的問題,本著解決問題的程序員的態度,花了一個下午的時間,將遇到的問題基本上全解決了。記錄一下,或許會有朋友也存在類似問題,為免少走一些元枉路,索引再花點時間整理了一下。
以下講解部分使用VB講解,喜歡C#的可以在隨后的附件中下載C#版本。
      首先新建一個Default.aspx文件,在aspx Source中輸入:

Default.aspx

      然后轉至CodeFile輸入代碼:

Default.aspx.vb

      很明顯,我上面只是簡單的string拼接。記得曾經在某網站看到說用StringBuilder的優於直接String的拼接吧。原理上是的,如果你愿意,就自行改用StringBuilder吧
     接下來再加一個aspx文件,直接在aspx Source中輸入如下:

Default2.aspx

      這個比較簡單,CodeFile就沒有什么啦。
      加入第三個aspx, aspx Source如下:

Default3.aspx

      註意一下<body id="MyBody" runat="server">這句話,vs2005默認產生的Document的body是沒有id,runat的,這里請手工加上去。
     CodeFile如下:

Default3.aspx.vb

     基本上就是這樣子的,做完之后感覺很簡單,呵呵。當然,這個也沒有花很多時間,因為網上的現成代碼很多的。見隨后的參考文獻2
      所花時間多的是隨后,將其放入真實項目中的時候,真實項目中,由於使用到了2.0的新加功能MasterPage,這下好了,將上面代碼原封不動的拷進去,總沒有效果出來,最后不得以設定了一下調試,說什么獲取不到對像,原話是什么,我也不記得,大概意思就是這樣子了,現在已經沒有了錯誤,我總不會為了重現這個錯誤,再試一下吧。呵呵:)如果你有興趣見識的話,將下載的原碼中document.getElementById('" + tbxMsg.ClientID + "').value這句話改成document.getElementById(' tbxMsg').value就可看到效果了。
      其實,我能夠想到加ClientId也是帶點僥幸的意味的。因為有VS2005強勁的JavaScript調試功能才得以得逞:)。調試時我發現在頁面生成之後,原來的頁面中的tbxMsgx id被改成類似這樣一個東西 ctl00$ContentPlaceHolder1$tbxMsg1於是就用這個代替了原先的tbxMsg,當時程序沒有報錯,也就是通過了,效果也出來了。呵呵,於是我記起WebUI Control好像都有一個什么ClientID的屬性。應該就類似於上面ctl00$ContentPlaceHolder1$tbxMsg1的東西吧。於是就用tbxMsg.ClientID試了一下。居然正確,有點歪打正著的感覺!竊喜ing.......:)

      下載文件當中的MasterPage參考了CodeProject上的一篇文章,見參考文獻1.
       說這些說了這麼多,也不知道你有沒有耐心看下去,還是附上解決方案吧,看Demo可能有些人覺得更實在。

模式窗體傳值源碼下載

參考文獻:
1、Creating a Common Toolbar in ASP.NET 2.0 using MasterPage, Delegate and Events.
2、CSDN明飛的專欄