日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

JSP GridView --使用自定义标签实现ASP.NET的控件

發布時間:2025/6/15 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSP GridView --使用自定义标签实现ASP.NET的控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JSP用自定義標簽實現ASP.net的gridview、datasource組件

?

第一部分:使用說明

?????????使用過ASP.NET的人都知道,gridview控件功能很強大,使用很方便,提高了開發效率、而且表現邏輯和數據分離,只需提供一個DataTable對象(一個表格的數據對象)。甚至,只要引入datasource控件,可以不用代碼也可以實現對數據庫的查看、刪除、修改等功能。

?????????JSP雖然沒有控件,但可以使用自定義標簽來實現類似ASP.NET控件的功能。網上也有很多開源的標簽庫。我利用自定義標簽實現了gridview和datasource的主要功能。

?????????效果:

?????????上面第一種是使用集合作為數據源,第二種使用datasource作為數據源。第一種需要定義一個List集合,刪除功能提供了一個連接需要自己寫代碼實現。第二種不需要編寫一句代碼就可以實現顯示數據、分頁、修改、刪除等功能,并且會保存到數據庫。

?????????先看一下JSP頁面的標簽:

??

?

標簽說明:

(1)?????gridview里的屬性

enablePaging:是否使用分頁功能;pageSize:每頁有多少行;datasource:數據源,當使用datasource是指定datasource的id,并且要指定屬性key的值(主鍵,刪除和修改時要用到),使用list類型需要使用pageContext.setAttribute保存。Key:主鍵(不一定是數據庫的主鍵),使用list作為數據源時不用指定。

(2)??column的屬性

dataItem:數據庫表的屬性名或者list類型的列名;readonly:只讀,不能對該列進行編輯。

(3)???????linkcolumn為進入該項詳細介紹的連接

urlFormatString:鏈接的url,可以指定參數{0}?;

urlBindItem:urlFormatString?參數{0}綁定的數據項;textFormatString:超鏈接文字描述部分,可以指定參數{0};

textBindItem:textFormatString?參數{0}綁定的數據項;

(4)???????deletecolumn?刪除按鈕那一列

使用list作為數據源時可以指定urlFormatString和urlBindItem參數。使用datasource時不需要參數。

(5)???????editcolumn?編輯按鈕列,點擊后進入編輯狀態。只要使用datasource的情況下可以使用。

?

(6)???????datasource(需要寫在gridview的上面)里有4個必填屬性:id,connectionString(鏈接數據庫的字符串),tableName(數據庫表名,用于刪除和更新),selectString(提供給gridview的數據)

還有,table的樣式我沒搞,自己可以使用css設置,gridview的id為生成table的name,每一列都可以知道width屬性。

我的開發環境的是:myeclipse8.5+jdk1.5+mysql5。自定義標簽要使用2.0的SimpleTagSupport。

?

第二部分:如何實現的

標簽的處理類繼承于SimpleTagSupport,在dotag函數處理。代碼結構如下圖:

?

當遇到gridview標簽時,生成包含帶有屬性的<table>標簽,并根據數據源的行數和分頁中頁面的大小,決定迭代的次數,迭代處理子標簽column、deletecolumn等。每次迭代都生成<tr>標簽,遇到子標簽生成<td>標簽,根據當前行數和dataItem輸出數據。父標簽和子標簽的交流通過sendData這個類進行。迭代第n次時,gridview標簽把數據源的該行數據保存到sendData的類變量中,在子標簽中讀取該變量的數據。

分頁的實現。我在url中設置了一個分頁參數,該參數是要顯示的那一頁,獲取到當前的url并修改這個參數的值,把這個url插入到上一頁、下一頁等標簽的οnclick=”?window.location.href='..’”之中。另外還要根據當前頁數,決定上、下頁按鈕的可見性。

Linkcolumn?通過urlFormatString="index.jsp?id={0}"設置生成<a>標簽的href屬性,并把從urlBindItem獲取的的值代替參數{0}。TextFormatString也一樣。

Datasource標簽。Connection類封裝了對數據庫底層的操作。Datasource這個類獲取的數據庫的連接字符串、selectString的參數,實例化source類(里面有數據,還有刪除、修改等操作),把它保存的senddate的類變量中,以供gridview使用。Source類中讀取數據時需要使用ResultSetMetaData獲取每一列的信息,在生成update,delete語句是用到,因為屬性的動態的,所以對數據庫的操作要使用prepareStatement,并且用setObject方法設置參數的值。之后在gridview點解刪除時,這個刪除所對應的url為當前頁面加上一個刪除參數,參數值為該行的key,根據這個參數執行source類的delete方法。修改按鈕中也是在url中就一個參數,使加載該行數據時加入<input type=”text”>標簽,并在updatecolumn中生成取消和確定的按鈕。取消按鈕對應的url自是減去修改按鈕新增的那個參數。確定按鈕對應的url在原來的基礎上加上標志參數,之后根據這個參數調養source的update方法。

?

遇到的問題和解決:

???1.點擊下一頁、刪除、修改等按鈕時,會改變gridview的狀態,要執行相應的代碼,但自定義標簽是無狀態的。開始是想寫幾個servlet,點擊按鈕時跳到對應的servlet處理,把狀態記錄在類變量中,但這樣需要在web.xml里寫servlet的配置。我不想這樣,就用url來處理,每個按鈕對應不同的參數,參數的值是動態改變的。當解析gridview標簽時,根據這些參數做相應的處理。

???2.sql語句的生成,Update、delete語句是動態生成的。解決:使用ResultSetMetaData獲取每一列的信息,對數據庫的操作要使用prepareStatement,根據gridview的column包含的列生成sql語句,并且用setObject方法設置參數的值。

?

總結

以上是生活随笔為你收集整理的JSP GridView --使用自定义标签实现ASP.NET的控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。