자동으로 테이블을 생성하고, 삭제, 편집, 채우기, 페이징 기능을 자동으로 완료하고
두 개의 클래스를 사용하여 헤더 스타일 코드를
사용자 정의합니다.처음에는 너무 많은 생각을 했고 기능이 너무 강력했기 때문에 ASP 클래스가 실행되는 속도가 느려졌습니다. 시작할수록 결국 흥미가 떨어지게 됩니다. 필드 유형 확인, 그림 표시, 컨트롤 등 아직 완료되지 않은 기능이 많이 있습니다. 코드는 모두가 함께 공부하고 공부할 수 있도록 게시됩니다. 관심 있는 사람들은
다음 함수의 예를 추가할 수 있습니다.
set a = new DataGrid
'a.Connstr="공급자=SQLOLEDB.1;사용자 ID=sa;비밀번호=servser;초기 카탈로그=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" 'DataGrid에 의해 제어되는 메인 테이블
a.UniqueField = "ID" '플래그 필드, 모든 레코드는 정수를 반복해서는 안 됩니다.
a.PagePosition = "down" '페이지 표시 위치, 위 위, 아래 아래, 위 아래, 위 및 아래, 기타는 표시되지 않습니다.
a.pagesize = 5 '페이지당 레코드 수 표시
a.Pagenumber = 10 '페이지 번호 표시
a.BorderColor="#ff0000" '기본값은 렌더링 표시입니다.
a.BackGround="#00ff00" '기본값은 렌더링 표시입니다.
a.BorderWidth=1 기본값은 1입니다
.
b1 = 새 열 설정
b1.Field = "id" '이 열에 바인딩된 데이터베이스 필드
b1.Title = "로고" '제목
b1.Align = "center" ' 정렬
a.AddColumn(b1) '이 열을 데이터 그리드에 삽입합니다.
b2 = 새 열 설정
b2.Field="이름"
b2.Title="성"
a.AddColumn(b2)
b3 = 새 열 설정
b3.Field = "성"
b3.Title = "이름"
a.AddColumn(b3)
b4 = 새 열 설정
b4.Field = "로그인 시간"
b4.Title = "로그인 횟수"
b4.ReadOnly = true '읽기 전용으로 설정하고 편집 상자 및 새 레코드에 표시되지 않습니다.
a.AddColumn(b4)
b5 = 새 열 설정
b5.Title="편집"
b5.Columntype ="edit" '열 편집
b5.EditCommandText = "Edit" '버튼 텍스트 편집
a.AddColumn(b5)
b6 = 새 열 설정
b6.align = "가운데"
b6.폭 = 200
b6.Columntype = "삭제"
b6.DeleteCommandText = "삭제 버튼"
b6.Title="삭제"
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
개인 고유 키, dg_action, currPage
비공개 작업URL,페이지URL,작업URL,양식URL
공개 페이지 위치, 페이지 크기, 페이지 번호
공개는Addnew입니다.
비공개 하위 클래스_Initialize()
열 설정 = Server.CreateObject("Scripting.Dictionary")
인덱스 = 0
페이지 크기 = 10
페이지 번호 = 10
페이지 위치 = "업다운"
strSQLString = 세션("DSN")
고유키 = 요청("고유키")
dg_action = 요청("dg_action")
currPage = 요청("페이지")
actionURL = Request.ServerVariables("Script_name") & "?page=" & currPage
dg_action= "edit"인 경우 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
rs = Server.CreateObject("Adodb.Recordset") 설정
서브 끝
비공개 하위 클래스_Terminate()
RS.닫기
설정자=아무것도 없음
열 설정 = 없음
서브 끝
공용 속성 SQLString() 가져오기
SQLString = strSQLString
끝 속성
공용 속성 Let SQLString(값)
strSQLString = 값
끝 속성
공공 자산 Let 스타일(값)
strStyle = 값()
끝 속성
공용 속성 스타일 가져오기()
스타일 = strStyle
끝 속성
공용 속성 Let UniqueField(값)
strUniqueField = lcase(값)
끝 속성
공용 속성 Get UniqueField()
UniqueField = strUniqueField
끝 속성
공공 재산 Let 테이블(값)
strTable = lcase(값)
끝 속성
공용 속성 GetTable()
테이블 = strTable
끝 속성
공용 속성 Let DbConn(값)
strConn = 값
끝 속성
공용 속성 버전 가져오기()
버전 = "1.0"
End 속성
공용 속성 Let Cellspacing(값)
strcellspacing = 값
끝 속성
공용 속성 Get Cellspacing()
셀 간격 = strcellspacing
끝 속성
공용 속성 Let cellpadding(값)
strcellpadding = 값
끝 속성
공용 속성 Get cellpadding()
cellpadding = strCellspacing
끝 속성
공용 속성 Let CssClass(Value)
strCssClass = 값
끝 속성
공용 속성 Get CssClass()
CssClass = strCssClass
끝 속성
공용 속성 Let BorderColor(값)
strBorderColorDark = 값
끝 속성
공용 속성 GetBorderColor()
BorderColor = strBorderColorDark
끝 속성
공용 속성 Let BackGround(값)
strBorderColorDark = 값
strBackgroundColor = 값
끝 속성
공용 속성 Get BackGround()
BackGround = strBorderColorLight
끝 속성
공용 속성 Let BorderWidth(값)
intBorderWidth = 값
끝 속성
공용 속성 GetBorderWidth()
BorderWidth = intBorderWidth
끝 속성
공용 속성 nColumns(intIndex) 가져오기
nkeys = 열.키
nItems = 열.항목
i = 0에서 Columns.Count - 1까지
intIndex = nkeys(i)이면
tmp = nItems(i) 설정
종료하면
다음
nColumns = tmp 설정
끝 속성
비공개 기능 페이지(totalpage,pagenumber,thisPage)
MinPage = thisPage - 페이지 번호/2
MinPage <= 0이면 MinPage = 1
'MinPage + 페이지 번호/2 > 전체 페이지인 경우 Maxpage = 전체 페이지 else Maxpage = MinPage + 페이지 번호
i = MinPage ~ MinPage + 페이지 번호 -1
만약 내가 <= totalpage라면
if cint(thisPage)<> cint(i) 그러면
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 <> "삭제"이고 nItems(i).readonly 및 nItems(i).field<>uniquefield가 아닌 경우
j <> 0이면 strsql = strsql & ","
사례 선택 nItems(i).DataType
대소문자 "텍스트"
strsql = strsql & nItems(i).field & "='" & Request(nItems(i).field)&"' "
대소문자 "number", "int", "bigint", "tinyint"
strsql = strsql & nItems(i).field & "=" & 요청(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 & " 여기서 " & UniqueField &" = "& 고유키
set rst = Server.CreateObject("adodb.recordset")
먼저 strsql,connstr을 엽니다.
'먼저.닫기
먼저 설정 = 없음
strsql = 아무것도 설정하지 않음
다음과 같은 경우 종료
dg_action="삭제"인 경우
strsql = ""
strsql = "" & table & "에서 삭제, 여기서 " & UniqueField &" = "& Uniquekey
응답.strsql 쓰기
set rst = Server.CreateObject("adodb.recordset")
먼저 strsql,connstr을 엽니다.
'먼저.닫기
먼저 설정 = 없음
다음과 같은 경우 종료
IF dg_action = "addnew"이고 isAddnew = 1이면
'어두운 strsql
set rst = Server.CreateObject("adodb.recordset")
rst.open 테이블,connstr,1,3,2
첫 번째.새로 추가
j=0
i = 0에서 인덱스 - 1로
nItems(i).Columntype<>"edit" 및 nItems(i).Columntype <> "삭제"이고 nItems(i).readonly 및 nItems(i).field<>uniquefield가 아닌 경우
j <> 0이면 strsql = strsql & ","
사례 선택 nItems(i).DataType
대소문자 "텍스트"
rst(nItems(i).field) = 요청(nItems(i).field)
대소문자 "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 & "cellspacing=0>" '스타일 추가
strTable = strTable & "<form action=" & formURL & " name=""gridform"" method=post>"
PagePosition="up" 또는 PagePosition="updown"이면 strTable = strTable & "<tr><td colspan="& index &">"& 페이지(rs.PageCount,Pagenumber,currPage )&"</td>< /tr>"
strTable = strTable & "<tr bgcolor=" & strHeadBackgroudColor & ">"
i = 0에서 인덱스 - 1까지
nItems(i).Title<>""이면
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)인 경우
i = 0에서 인덱스 - 1까지
nItems(i).Columntype<>"edit" 및 nItems(i).Columntype <> "삭제"이고 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="고유 필드가 설정되지 않음"
dg_action = "edit"인 경우
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="고유 필드가 설정되지 않음"
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>"
선택 종료
종료하면
다음
또 다른
i = 0에서 인덱스 - 1까지
선택 케이스 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="고유 필드가 설정되지 않음"
strTable = strTable & "<td " & nItems(i).HTMLstr & "><a href=" & actionURL & "&dg_action=edit&uniquekey=" & rs(UniqueField) & ">" & nItems(i).EditCommandText & " </a></td>"
케이스 "삭제"
if UniqueField="" then ErrorMsg="고유 필드가 설정되지 않음"
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><td colspan="& index &">"& 페이지(rs.PageCount,Pagenumber,currPage )
'strTable =strTable&"<tr>"
i = 0에서 인덱스 - 1까지
nItems(i).Columntype<>"edit" 및 nItems(i).Columntype <> "삭제"이고 nItems(i).readonly 및 nItems(i).field<>uniquefield가 아닌 경우
'strTable = strTable & "<td " & nItems(i).HTMLstr &"><input type=Text name=""" & rs.Fields(nItems(i).field).Name &"""></ td>"
또 다른
'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 & " 셀 간격=0><tr>"
i = 0에서 인덱스 - 1까지
nItems(i).Columntype<>"edit" 및 nItems(i).Columntype <> "삭제"이고 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>"
i = 0에서 인덱스 - 1까지
nItems(i).Columntype<>"edit" 및 nItems(i).Columntype <> "삭제"이고 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>"
다음과 같은 경우 종료
응답.strTable 쓰기
서브 끝
공개 하위 AddColumn(cColumn)
'설정 항목 = 새 열
'항목 = c열
'응답.쓰기 cColumn.ColumnHTMLstr
열.인덱스 추가,c열
인덱스 = 인덱스 + 1
'열.항목(i)
서브 끝
수업 종료
수업 열
비공개 strType
비공개 strAlign
비공개 strStyle
비공개 열 텍스트
비공개 intWidth
비공개 intHight
비공개 strfield
비공개 strTitle
비공개 strEvent
비공개 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()
서브 끝
공용 속성 Let Columntype(값)
strType = lcase(값)
끝 속성
공용 속성 Get Columntype()
열 유형 = strType
끝 속성
공공 재산 Let Para(가치)
파라=값
끝 속성
공용 속성 Let ParaLink(값)
ParaLink = 바꾸기(값,"{0}",Para)
끝 속성
공용 속성 Let ControlName(값)
컨트롤 이름 = 값
끝 속성
공공 자산 Let 스타일(값)
strStyle = 값
끝 속성
공용 속성 Let Eventstr(값)
str이벤트 = 값
끝 속성
공용 속성 Let Align(값)
strAlign = 값
끝 속성
공용 속성 GetAlign()
정렬 = strAlign
끝 속성
공용 속성 GetEventstr()
이벤트str = str이벤트
끝 속성
공공 재산 임대 너비(값)
intWidth = 값
끝 속성
공공 자산 Let 필드(값)
strField = lcase(값)
끝 속성
공용 속성 가져오기 필드()
필드 = strField
끝 속성
공공재산 소유권(가치)
if value=""이면 strTitle = strField else strTitle = Value
끝 속성
공공 재산 제목 가져오기()
if strTitle=""이면 Title = strField else Title = strTitle
끝 속성
공용 속성 Let CssClass(Value)
strCssClass = 값
끝 속성
공용 속성 Get CssClass()
CssClass = strCssClass
끝 속성
공용 속성 Let DataType(값)
strDataType = lcase(값)
끝 속성
공용 속성 Get DataType()
데이터 유형 = strDataType
끝 속성
공용 속성 Let 텍스트(값)
케이스 값 선택
사례 ""
strText = strType
케이스 null
strText = strType
다른 경우
strText = 값
선택 종료
끝 속성
공용 속성 텍스트 가져오기()
텍스트 = strText
끝 속성
공용 속성 Let ReadOnly(값)
value="" 또는 isnull(value)이면 strReadOnly = False else strReadOnly = value
끝 속성
공용 속성 Get ReadOnly()
ReadOnly = strReadOnly
끝 속성
공용 속성 Let EditCommandText(Value)
strEditCommandText = 값
끝 속성
공용 속성 Get EditCommandText()
EditCommandText = strEditCommandText
끝 속성
공용 속성 Let UpdateCommandText(값)
strUpdateCommandText = 값
끝 속성
공용 속성 GetUpdateCommandText()
UpdateCommandText = strUpdateCommandText
끝 속성
공용 속성 Let CancelCommandText(값)
strCancelCommandText = 값
끝 속성
공용 속성 Get CancelCommandText()
CancelCommandText = strCancelCommandText
끝 속성
공용 속성 Let DeleteCommandText(값)
strDeleteCommandText = 값
끝 속성
공용 속성 Get DeleteCommandText()
DeleteCommandText = strDeleteCommandText
끝 속성
공용 속성 Let RegExp(값)
strRegExp = 값
끝 속성
공용 속성 RegExp 가져오기()
RegExp = strRegExp
끝 속성
공용 속성 HTMLstr() 가져오기
임시 직원 = ""
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 = 임시 문자열
끝 속성
수업 종료
%>