国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

數據表單向導的快速實現

2024-07-21 02:16:07
字體:
來源:轉載
供稿:網友

asp.net的數據表單向導類似于windows應用程序。

介紹
自從vs.net為windows窗體提供了強大的數據表單向導工具之后,我一直在思考為什么不為asp.net提供相似的工具呢?

因為windows應用程序和asp.net應用程序使用的是相同的ado.net類,所以在asp.net中編寫這樣一個工具是有可能的。

我們所關心的第一件重要的事情是它能在windows應用程序中良好而又穩定地使用dataset,而在web應用程序中就不是這樣了。最好的解決辦法就是使用datareader,因為它只能向前讀,所以它將是一件令人疲乏不堪的事情。

兩年前,我就已經開始寫這樣一個控件。這實在是一件工作量很大的事情,但是我認為它帶來的結果將是美好的。
背景
但是在我們工作結束的2個月(2002年),stephen walther的《unleashed asp.net》發表了。在這本書中,我發現了作者也寫了一個相同的控件,但是要比我寫的功能強的多。它有很多優點,甚至比windows應用程序的數據表單向導更好定制。它使用datareader而不是dataset,所以它是一個輕型的工具。

我想沒有必要再去發表討論這個控件的文章了,因為微軟一定會在新版vs.net (whidbey)中做出相同或更好的一個工具。但是在我看了asp.net 2.0(即whidbey)的新特性之后,我失望了因為微軟并沒有像我預想的那樣去做這樣一個工具。所以我看發表這樣一篇文章還是有用的。

這個控件本身是一些從 system.web.ui.webcontrols 類繼承過來的控件的集合,它可以分成兩個分集合:

1.              專門處理sql server的控件集合。

2.              處理任意數據庫引擎的oledb控件的集合。

我已經測試通過了sql模塊,一些bug能被克服實在是太棒了。但是關于oledb模塊并不順利,我在oracle 9i中進行了試驗,遺憾的是它并不能正常工作,因為在接受連接字符串時有一個bug。(我希望能盡快修補好)
使用代碼
我已經寫好了一個例子,它演示了如何使用這個控件,如何完全克服它的一些bug。

1.              打開vs.net,新建項目,選擇“asp.net web 應用程序”。

2.              在工具箱中點擊右鍵,選擇“添加/移除項”,轉到下載的工程文件夾下的 bin 目錄,然后選擇 superexpert.dataform.dll ,這樣就會把dataform的兩個控件集添加到工具箱中。正如你所看到的, oledb控件都是綠色的而sql控件都是紅色的。





3.              把sqldatapanel 控件放到頁面上,然后把你想要的所有控件(如前圖所見)也放上去。

4.              設置 sqldatapanel 的屬性,使它指向所請求的表,其他關鍵區域如下圖所示:




技巧:
不要在設計模式下設置連接字符串。我曾這么做但是它不能工作,所以最好是在頁面加載時進行設置。(我的連接字符串存放在 web.config 并指向 sql server中的northwind數據庫)

sqldatapanel1.connection = new _

  sqlconnection(system.configuration._

  configurationsettings.appsettings("connstr"))

5.把 sqldatanavigator 控件(它包含4個向導按鈕)放到頁面上,然后把它跟 sqldatapanel 控件聯系起來,代碼如下:







sqldatanavigator1.controltonavigate = me.sqldatapanel1

同樣,你應該把相同的字符串跟向導控件聯系起來,代碼如下:

sqldatanavigator1.connection = me.sqldatapanel1.connection

6.              把所有你要在這個表單中使用的控件放到頁面上去,注意,一定是要列出來的控件集中的控件。舉例來說,如果你想要在 textbox控件中顯示數據,你必須選擇 datatextbox 控件并把它放在你的 sqldatapanel 控件上。







7.              每個數據控件中有兩個屬性是需要設置的:






datafield: 保存綁定區域的名字

datatype: 保存綁定區域的數據類型




8.運行這個程序,你將看到你可以平穩而快速地瀏覽northwind數據庫中employees表中的數據。


提示:
如果你是直接從 stephen 的網站下載這個控件的,那你將看到一條評估信息,而你下載本文附加的那個控件將不會出現評估信息。



9.stephen的控件有“添加記錄”,“更新”和“刪除”幾個按鈕,但是我試了之后發現它們不起作用,所以你必須像處理常規按鈕那樣手動操作它們,這個例子將顯示成這樣:





這是操作這個例子的所有源代碼[vb.net]:

private sub page_load(byval sender as system.object, _

         byval e as system.eventargs) handles mybase.load


 


    ' put user code to initialize the page here

    ' passing the data panel to the navigator coz it'll not

    ' work from design mode properties (bug)


 


    sqldatanavigator1.controltonavigate = me.sqldatapanel1


 


    ' also passing the connection string from web.config

    ' becoz passing it from the design mode will not work (bug)


 


   sqldatapanel1.connection = new _

      sqlconnection(system.configuration.configurationsettings.appsettings(_

                                                                 "connstr"))


 


    'and finally passing it to the navigator too.

    sqldatanavigator1.connection = me.sqldatapanel1.connection

end sub


 


'handling the add record btn

private sub dataaddbutton1_click(byval sender as system.object, _

        byval e as system.eventargs) handles dataaddbutton1.click


 


    dim insertstr as string = "insert into employees" & _

          " (lastname,firstname,title,city,country,homephone,notes) values('"_

          + me.lastname_txt.text + "','" + me.firstname_txt.text + _

          "','" + me.title_txt.text + "', '" + me.city_txt.text + _

          "','" + me.cntry_txt.text + "','" + me.homephone_txt.text + _

          "','" + me.notes_txt.text + "')"


 


    dim conn as new _

      sqlconnection(system.configuration.configurationsettings.appsettings(_

                                                                  "connstr"))

    dim cmd as new sqlcommand(insertstr, conn)


 


    try

      conn.open()

      cmd.executenonquery()

    finally

      conn.close()

    end try

end sub



'handling the delete btn

private sub delete_btn_click(byval sender as system.object, _

        byval e as system.eventargs) handles delete_btn.click


 


    dim delstr as string = _

       "delete from employees where employeeid='" + _

       me.empid_txt.text + "'"


 


    dim conn as new _

      sqlconnection(system.configuration.configurationsettings.appsettings(_

                                                                  "connstr"))


 


    dim cmd as new sqlcommand(delstr, conn)


 


    try

      conn.open()

      cmd.executenonquery()

    finally

      conn.close()

    end try

end sub



'handling the update btn


 


private sub dataupdatebutton1_click(byval sender as system.object, _

   byval e as system.eventargs) handles dataupdatebutton1.click


 


   dim updatestr as string = "update employees set lastname='" + _

                             me.lastname_txt.text + "',firstname='" + _

                             me.firstname_txt.text + "',title='" + _

                             me.title_txt.text + "',city='" + _

                             me.city_txt.text + "',country= '" + _

                             me.cntry_txt.text + "',homephone='" + _

                             me.homephone_txt.text + "',notes='" + _

                             me.notes_txt.text + "' where employeeid='" + _

                             me.empid_txt.text + "'"


 


    dim conn as new _

      sqlconnection(system.configuration.configurationsettings.appsettings(_

                                                                  "connstr"))


 


    dim cmd as new sqlcommand(updatestr, conn)


 


    try

      conn.open()

      cmd.executenonquery()

    finally

      conn.close()

    end try

end sub
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 星子县| 龙南县| 湟源县| 呈贡县| 庆云县| 衡阳县| 乌鲁木齐县| 调兵山市| 定西市| 内乡县| 沁阳市| 治多县| 南充市| 灵璧县| 麻江县| 海南省| 九龙城区| 怀宁县| 长寿区| 阿城市| 民权县| 卓资县| 航空| 南开区| 南丰县| 双流县| 丹江口市| 江川县| 新河县| 霸州市| 合江县| 大姚县| 应用必备| 合作市| 托克托县| 蒲城县| 万荣县| 靖边县| 大理市| 华阴市| 临武县|