テーブルを自動的に生成し、削除、編集、埋め込み、ページング機能を自動的に完了し、
2 つのクラスを使用してヘッダー スタイル コード
をカスタマイズします。最初は、機能が強力すぎるため、ASP クラスの実行が遅くなります。フィールドタイプの検証、画像の表示、コントロールなど、まだ完成していない機能がたくさんあります。コードは、みんなで勉強して勉強できるように公開されています。興味のある方は、
次の関数の例を追加できます:
set a = new DataGrid
'a.Connstr="プロバイダ=SQLOLEDB.1;ユーザーID=sa;パスワード=server;初期カタログ=temp_blue;データソース=サーバー;接続タイムアウト=30;自動翻訳=True;パケットサイズ=4096;"
a.Connstr="Provider=Microsoft.Jet.OLEDB.4.0;"&" Data Source="&server.mappath("test.mdb") '接続 ACCSS 文字列
a.SQLString="select * from table1" 'データグリッドによって表示されるレコードセットの SQL ステートメントを生成します
a.isAddnew = 1 '新しいレコードを追加できるかどうか
a.Table = "table1" 'データグリッドによって制御されるメインテーブル
a.UniqueField = "ID" 'フラグ フィールド。すべてのレコードは整数を繰り返してはなりません
a.PagePosition = "down" 'ページの表示位置、上上、下下、上下、上下、その他は表示されません
a.pagesize = 5 'ページあたりのレコード数を表示します
a.Pagenumber = 10 '表示ページ番号
a.BorderColor="#ff0000" 'デフォルトはレンダリング表示
a.BackGround="#00ff00" 'デフォルトはレンダリング表示
a.BorderWidth=1 デフォルトは1です
。
set b1 = 新しい列
b1.Field = "id" 'この列にバインドされたデータベース フィールド
b1.Title = "ロゴ" 'タイトル
b1.Align = "center" ' 配置
a.AddColumn(b1) 'この列をデータグリッドに挿入します
set b2 = 新しい列
b2.Field="名"
b2.Title="姓"
a.AddColumn(b2)
set b3 = 新しい列
b3.フィールド = "姓"
b3.タイトル = "名前"
a.AddColumn(b3)
set b4 = 新しい列
b4.フィールド = "ログイン時間"
b4.Title = "ログイン数"
b4.ReadOnly = true '読み取り専用として設定され、編集ボックスと新しいレコードには表示されません
a.AddColumn(b4)
set b5 = 新しい列
b5.Title="編集"
b5.Columntype ="edit" '列を編集します
b5.EditCommandText = "Edit" 'ボタンのテキストを編集します
a.AddColumn(b5)
set b6 = 新しい列
b6.align = "中央"
b6.幅 = 200
b6.Columntype = "削除"
b6.DeleteCommandText = "削除ボタン"
b6.タイトル="削除"
a.AddColumn(b6)
a.CreateGrid()
セット b1 = なし
b2 = 何も設定しない
b3 = 何も設定しない
b4 = 何も設定しない
b5 = 何も設定しない
b6 = 何も設定しない
クラス ファイルは次のとおりです:
<%Class DataGrid
プライベートページ
プライベート strSQLString
パブリックコンストラ
プライベート列
プライベートインデックス
プライベート strUniqueField、strTable
プライベートRS
プライベート strCellspacing、strCellpadding、strCssClass
プライベート strBorderColorDark、strBorderColorLight、strBackGroundColor
プライベート intBorderWidth
プライベート strHeadStyle、strHeadBackgroudColor
プライベート strStyle、strAlternateStyle
プライベート UniqueKey、dg_action、currPage
プライベートアクションURL、ページURL、オペレーションURL、フォームURL
パブリック ページ位置、ページサイズ、ページ番号
公開は新規追加
プライベートサブクラス_Initialize()
set Columns = Server.CreateObject("Scripting.Dictionary")
インデックス = 0
ページサイズ = 10
ページ番号 = 10
PagePosition = "上下"
strSQLString = セッション("DSN")
uniquekey = リクエスト("ユニークキー")
dg_action = リクエスト("dg_action")
currPage = リクエスト("ページ")
actionURL = Request.ServerVariables("Script_name") & "?page=" & currPage
if dg_action= "edit" then formURL = actionURL& "&dg_action=update&uniquekey="&uniquekey
OperationURL = Request.ServerVariables("Script_name") & "?page=" & currPage& "&uniquekey=" & uniquekey
pageURL = Request.ServerVariables("Script_name")&"?1=1"
currPage = "" または isnull(currPage) の場合、currPage = 1
strBorderColorDark="#f7f7f7"
strBorderColorLight = "#cccccc"
strBackgroundColor = "#f7f7f7"
strHeadBackgroudColor = "#F2F2F2"
intBorderWidth = 1
strAlternateStyle="bgcolor=#f6f6f6"
isAddnew = 1
Set rs = Server.CreateObject("Adodb.Recordset")
エンドサブ
プライベートサブクラス_Terminate()
rs.close
setrs=なし
列 = なしを設定します
エンドサブ
Public プロパティ Get SQLString()
SQLString = strSQLString
終了プロパティ
Public プロパティ Let SQLString(Value)
strSQLString = 値
終了プロパティ
Public プロパティ Let Style(Value)
strStyle = 値()
終了プロパティ
パブリック プロパティ Get Style()
スタイル = strStyle
終了プロパティ
Public プロパティ Let UniqueField(Value)
strUniqueField = lcase(値)
終了プロパティ
Public プロパティ Get UniqueField()
UniqueField = strUniqueField
終了プロパティ
Public プロパティ Let Table(Value)
strTable = lcase(値)
終了プロパティ
パブリック プロパティ GetTable()
テーブル = strTable
終了プロパティ
Public プロパティ Let DbConn(Value)
strConn = 値
終了プロパティ
パブリック プロパティ Get Version()
バージョン = "1.0"
End プロパティ
Public プロパティ Let Cellspacing(Value)
strcellspacing = 値
終了プロパティ
Public プロパティ Get Cellspacing()
セル間隔 = strcellspacing
終了プロパティ
Public プロパティ Let cellpadding(Value)
strcellpadding = 値
終了プロパティ
Public プロパティ Get cellpadding()
cellpadding = strCellspacing
終了プロパティ
Public プロパティ Let CssClass(Value)
strCssClass = 値
終了プロパティ
パブリック プロパティ Get CssClass()
Cssクラス = strCssクラス
終了プロパティ
Public プロパティ Let BorderColor(value)
strBorderColorDark = 値
終了プロパティ
パブリック プロパティ GetBorderColor()
BorderColor = strBorderColorDark
終了プロパティ
Public プロパティ Let BackGround(value)
strBorderColorDark = 値
strBackgroundColor = 値
終了プロパティ
Public プロパティ Get BackGround()
BackGround = strBorderColorLight
終了プロパティ
Public プロパティ Let BorderWidth(value)
intBorderWidth = 値
終了プロパティ
Public プロパティ GetBorderWidth()
BorderWidth = intBorderWidth
終了プロパティ
Public プロパティ Get nColumns(intIndex)
nkeys = 列.キー
nItems = 列.項目
for i = 0 ~ Columns.Count - 1
intIndex = nkeys(i) の場合
set tmp = nItems(i)
終了する場合
次
nColumns = tmp を設定します
終了プロパティ
プライベート機能ページ(合計ページ、ページ番号、このページ)
MinPage = thisPage - ページ番号/2
MinPage <= 0 の場合、MinPage = 1
'if MinPage + ページ番号/2 > totalpage then Maxpage = totalpage else Maxpage = MinPage + pagenumber
for i = MinPage から MinPage + ページ番号 -1
if i <= totalpage なら
if cint(thisPage)<> cint(i) then
strtemp = strtemp & "<a href="&pageURL&"&page=" & i &">" & i & "</a> "
それ以外
strtemp = strtemp & i&" "
終了する場合
それ以外
ページ = strtemp
終了関数
終了する場合
次
ページ = strtemp
終了機能
パブリックサブCreateGrid()
nkeys = 列.キー
nItems = 列.項目
dg_action="更新" の場合、
ディム strsql
strsql = "更新"&テーブル&"設定"
薄暗いj
j=0
i = 0 からインデックス - 1 まで
nItems(i).Columntype<>「edit」および nItems(i).Columntype<>「delete」であり、nItems(i).readonly および nItems(i).field<>uniquefield ではない場合、
j <> 0 の場合、strsql = strsql & ","
nItems(i).DataType の場合を選択してください
ケース「テキスト」
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
Case "number"、"int"、"bigint"、"tinyint"
strsql = strsql & nItems(i).field & "= & Request(nItems(i).field) & " "
「日付」、「時刻」、「日時」の場合
strsql = strsql & nItems(i).field & "=convert(datetime,'" & Request(nItems(i).field)&"',102) "
それ以外の場合
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
エンドセレクト
j=j+1
次の場合に終了
次
strsql = strsql & " where " & UniqueField &" = "& uniquekey
set rst = Server.CreateObject("adodb.recordset")
rst.Open strsql,connstr
'最初に閉じる
最初 = 何も設定しない
strsql = 何も設定しない
次の場合に終了
dg_action="削除" の場合
strsql = ""
strsql = "" & table & " から削除します。 where " & UniqueField &" = "& uniquekey
応答.strsql の書き込み
set rst = Server.CreateObject("adodb.recordset")
rst.Open strsql,connstr
'最初に閉じる
最初 = 何も設定しない
次の場合に終了
IF dg_action = "addnew" かつ isAddnew = 1 then
'dim strsql
set rst = Server.CreateObject("adodb.recordset")
最初のテーブルを開く,connstr,1,3,2
最初の追加新規
j=0
i = 0 からインデックス - 1 まで
nItems(i).Columntype<>「edit」および nItems(i).Columntype<>「delete」であり、nItems(i).readonly および nItems(i).field<>uniquefield ではない場合、
if j <> 0 then strsql = strsql & ","
nItems(i).DataType の場合を選択してください
ケース「テキスト」
rst(nItems(i).field) = リクエスト(nItems(i).field)
Case "number"、"int"、"bigint"、"tinyint"
rst(nItems(i).field) = リクエスト(nItems(i).field)
ケース「日付」、「時刻」、「日時」
rst(nItems(i).field) = リクエスト(nItems(i).field)
それ以外の場合
rst(nItems(i).field) = リクエスト(nItems(i).field)
エンドセレクト
j=j+1
次の場合に終了
次
最初の更新
最初 = 何も設定しない
次の場合に終了
rs.Open strSQLString,connstr,1,1
strTable= "<table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight=" & strbordercolorlight & "class=" &cssclass & " cellpacing=0>" 'スタイルを追加
strTable = strTable & "<form action=" & formURL & " name=""gridform"" method=post>"
PagePosition="up" または PagePosition="updown" の場合、strTable = strTable & "<tr><tdcolspan="&index &">"& page(rs.PageCount,Pagenumber,currPage )&"</td>< /tr>"
strTable = strTable & "<tr bgcolor=" & strHeadBackgroudColor & ">"
for i = 0 からインデックス - 1
if nItems(i).Title<>"" then
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & nItems(i).Title &"</td>"
それ以外
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs.Fields(i).Item.Name &"</td>"
終了する場合
次
strTable = strTable & "</tr>"
cint(currPage) > cint(rs.PageCount) の場合、currPage = rs.PageCount
intPage = ページサイズ
rs.PageSize = ページサイズ
rs.AbsolutePage = currPage
rs.eof および intPage > 0 ではないときに実行します
intPage = intPage - 1
dbuniquekey = rs(ユニークフィールド)
intPage mod 2 の場合
strTable = strTable & "<tr>"
それ以外
strTable = strTable & "<tr "& strAlternateStyle &">"
次の場合に終了
'response.Write len(dg_action)>0 および int(dbuniquekey) = int(uniquekey)
dg_action ="edit" かつ int(dbuniquekey) = int(uniquekey) の場合
for i = 0 からインデックス - 1
nItems(i).Columntype<>「edit」および nItems(i).Columntype<>「delete」であり、nItems(i).readonly および nItems(i).field<>uniquefield ではない場合、
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &""" value="" " & rs(nItems(i).field) &"""></td>"
それ以外
ケースを選択 lcase(nItems(i).Columntype)
ケース「ラベル」
strTable = strTable & "<td "& nItems(i).HTMLstr &">" & rs(nItems(i).field) &"</td>"
ケース「ラジオ」
ケース「イメージ」
ケース「チェックボックス」
ケース「テキストボックス」
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text name=""" & rs.Fields(i).Name &""" value=" & rs(nItems(i) ).フィールド) &"></td>"
ケース「リンク」
ケース「編集」
if UniqueField="" then ErrorMsg="UniqueField が設定されていません"
dg_action = "編集" の場合
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href=""JavaScript:document.gridform.submit()"">"&nItems(i).UpdateCommandText&"</a> <a href ="&actionURL&">"&nItems(i).CancelCommandText&"</a></td>"
それ以外
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=edit&uniquekey=" & rs(UniqueField) &">"&nItems(i).EditCommandText&"</a>< /td>"
終了する場合
ケース「削除」
if UniqueField="" then ErrorMsg="UniqueField が設定されていません"
strTable = strTable & "<td "&nItems(i).HTMLstr &"><a href="&actionURL&"&dg_action=delete&uniquekey=" & rs(UniqueField) &">"&nItems(i).DeleteCommandText&"</a>< /td>"
ケース「アップデート」
それ以外の場合
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) & "</td>"
エンドセレクト
終了する場合
次
それ以外
for i = 0 からインデックス - 1
select case lcase(nItems(i).Columntype)
ケース「ラベル」
strTable = strTable & "<td " & nItems(i).HTMLstr & ">" & rs(nItems(i).field) &"</td>"
ケース「ラジオ」
ケース「イメージ」
ケース「チェックボックス」
ケース「テキストボックス」
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=text value=" & rs(nItems(i).field) &"></td>"
ケース「リンク」
ケース「編集」
if UniqueField="" then ErrorMsg="UniqueField が設定されていません"
strTable = strTable & "<td " & nItems(i).HTMLstr & "><a href=" & actionURL & "&dg_action=edit&uniquekey=" & rs(UniqueField) & ">" & nItems(i).EditCommandText & " </a></td>」
ケース「削除」
if UniqueField="" then ErrorMsg="UniqueField が設定されていません"
strTable = strTable & "<td " & nItems(i).HTMLstr &"><a href=" & actionURL & "&dg_action=delete&uniquekey=" & rs(UniqueField) &">" & nItems(i).DeleteCommandText&"< /a></td>"
ケース「アップデート」
それ以外の場合
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs(nItems(i).Field) & "</td>"
エンドセレクト
次
次の場合に終了
'次の場合は終了
rs.movenext
strTable = strTable & "</tr>"& vbcrlf
ループ
PagePosition="down" または PagePosition="updown" の場合、 strTable = strTable & "<tr><tdcolspan="&index &">"& page(rs.PageCount,Pagenumber,currPage )
'strTable =strTable&"<tr>"
for i = 0 からインデックス - 1
nItems(i).Columntype<>「edit」および nItems(i).Columntype<>「delete」であり、nItems(i).readonly および nItems(i).field<>uniquefield ではない場合、
'strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></た>」
それ以外
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
終了する場合
次
strTable =strTable&"</tr>"
strTable = strTable & "</form></table>"
isAddnew = 1 の場合、
strTable = strTable & "<form action=""?dg_action=addnew"" name=""dgridadd"" method=""post""><table border=" & intBorderWidth & " bordercolordark=" & strBorderColorDark & " bordercolorlight= " & strbordercolorlight & " cellpacing=0><tr>"
for i = 0 からインデックス - 1
nItems(i).Columntype<>「edit」および nItems(i).Columntype<>「delete」であり、nItems(i).readonly および nItems(i).field<>uniquefield ではない場合、
strTable = strTable & "<td " & nItems(i).HTMLstr &">" & rs.Fields(nItems(i).field).Name &"</td>"
それ以外
'strTable = strTable & "<td " & nItems(i).HTMLstr &">"&nItems(i).Title&"</td>"
終了する場合
次
strTable = strTable & "<td rowspan=2><a href=""JavaScript:document.dgridadd.submit()"">新規</a></td></tr><tr>"
for i = 0 からインデックス - 1
nItems(i).Columntype<>「edit」および nItems(i).Columntype<>「delete」であり、nItems(i).readonly および nItems(i).field<>uniquefield ではない場合、
strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></td >" & vbcrlf
それ以外
'strTable = strTable & "<td " & nItems(i).HTMLstr &"> </td>"
終了する場合
次
strTable = strTable &"</tr></table></form>"
次の場合に終了
Response.StrTable の書き込み
エンドサブ
パブリックサブAddColumn(cColumn)
'set tem = 新しい列
'tem = cColumn
'response.Write cColumn.ColumnHTMLstr
列.インデックスを追加,cColumn
インデックス = インデックス + 1
'列.項目(i)
エンドサブ
終了クラス
クラス列
プライベート strType
プライベート strAlign
プライベートstrStyle
プライベート列テキスト
プライベート intWidth
プライベート intHight
プライベート ストラフィールド
プライベート strTitle
プライベートstrイベント
プライベート strCssClass
プライベート strText
プライベート strEditCommandText、strUpdateCommandText、strCancelCommandText、strDeleteCommandText
プライベート strRegExp
プライベート strReadOnly
プライベート strDataType
パブリック MaxValue、MinValue、MaxLength、MinLength、IsEmpty、IsChar、IsNumber、isCharNumber、isDate、isEmail
プライベートサブクラス_Initialize()
列の種類 = "テキスト"
strEditCommandText = "編集"
strUpdateCommandText = "更新"
strCancelCommandText = "キャンセル"
strDeleteCommandText = "削除"
エンドサブ
プライベートサブクラス_Terminate()
エンドサブ
Public プロパティ Let Columntype(Value)
strType = lcase(値)
終了プロパティ
パブリック プロパティ Get Columntype()
列タイプ = strType
終了プロパティ
Public プロパティ Let Para(Value)
パラ=値
終了プロパティ
Public プロパティ Let ParaLink(Value)
ParaLink = Replace(値,"{0}",Para)
終了プロパティ
Public プロパティ Let ControlName(Value)
コントロール名 = 値
終了プロパティ
Public プロパティ Let Style(Value)
strStyle = 値
終了プロパティ
Public プロパティ Let Eventstr(Value)
strEvent = 値
終了プロパティ
Public プロパティ Let Align(Value)
strAlign = 値
終了プロパティ
パブリック プロパティ GetAlign()
整列 = strAlign
終了プロパティ
パブリック プロパティ GetEventstr()
イベントstr = strEvent
終了プロパティ
Public プロパティ Let width(Value)
intWidth = 値
終了プロパティ
Public プロパティ Let フィールド(値)
strField = lcase(値)
終了プロパティ
パブリック プロパティ Get Field()
フィールド = strフィールド
終了プロパティ
Public プロパティ Let Title(Value)
if value="" then strTitle = strField else strTitle = Value
終了プロパティ
パブリック プロパティ Get Title()
if strTitle="" then Title = strField else Title = strTitle
終了プロパティ
Public プロパティ Let CssClass(Value)
strCssClass = 値
終了プロパティ
パブリック プロパティ Get CssClass()
Cssクラス = strCssクラス
終了プロパティ
Public プロパティ Let DataType(Value)
strDataType = lcase(値)
終了プロパティ
パブリック プロパティ Get DataType()
データタイプ = strDataType
終了プロパティ
Public プロパティ Let Text(Value)
ケース値を選択
場合 ""
strText = strType
null の場合
strText = strType
それ以外の場合
strText = 値
エンドセレクト
終了プロパティ
パブリック プロパティ Get Text()
テキスト = strText
終了プロパティ
Public プロパティ Let ReadOnly(Value)
value="" または isnull(value) の場合、strReadOnly = False、そうでない場合、strReadOnly = value
終了プロパティ
パブリック プロパティ Get ReadOnly()
読み取り専用 = strReadOnly
終了プロパティ
Public プロパティ Let EditCommandText(Value)
strEditCommandText = 値
終了プロパティ
Public プロパティ Get EditCommandText()
EditCommandText = strEditCommandText
終了プロパティ
Public プロパティ Let UpdateCommandText(Value)
strUpdateCommandText = 値
終了プロパティ
Public プロパティ GetUpdateCommandText()
UpdateCommandText = strUpdateCommandText
終了プロパティ
Public プロパティ Let CancelCommandText(Value)
strCancelCommandText = 値
終了プロパティ
Public プロパティ Get CancelCommandText()
CancelCommandText = strCancelCommandText
終了プロパティ
Public プロパティ Let DeleteCommandText(Value)
strDeleteCommandText = 値
終了プロパティ
Public プロパティ Get DeleteCommandText()
DeleteCommandText = strDeleteCommandText
終了プロパティ
Public プロパティ Let RegExp(Value)
strRegExp = 値
終了プロパティ
パブリック プロパティ Get RegExp()
RegExp = strRegExp
終了プロパティ
パブリック プロパティ Get HTMLstr()
tempstr = ""
if intWidth <> "" then tempstr = tempstr & " width=""" & intWidth & """"
if intHeight <> "" then tempstr = tempstr & " height =""" & intHeight & """"
if strStyle <> "" then tempstr = tempstr & " style=""" & strStyle & """"
if strEvent <> "" then tempstr = tempstr & " " & strEvent
if strAlign <> "" then tempstr = tempstr & " align=""" & strAlign & """"
HTMLstr = tempstr
終了プロパティ
終了クラス
%>