JavaScript에서 RecordSet을 사용하는 것에 대해 생각한 적이 있습니까? 클라이언트의 데이터가 매우 간단 할 수 있습니다. 데이터 소스를 정의하고 데이터를 다양한 태그에 바인딩하며 응용 프로그램과 같은 효과를 달성하십시오. 너무 멋지다! (우선, 기사의 내용은 MSDN에서 비롯되지만 내 말의 요약 일뿐입니다.)
두 가지 예를 살펴 보겠습니다.
http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm
http://msdn.microsoft.com/workshop/samples/author/databind/dbupdate.htm
Microsoft에 다시 존경해야합니다.
이것은 데이터 바인딩 아키텍처입니다.
물론 데이터 바인딩을 구현하기위한 다음 단계가 있습니다.
첫 번째 단계는 데이터 소스를 정의하는 것입니다
IE4.0 이후 다음 4 가지 데이터 소스가 지원되었습니다.
TDC (Tabular Data Control)
TDC는 형식, 일반적으로 CSV 파일로 텍스트 데이터에 액세스하는 간단한 방법을 제공합니다.
간단한 예는 다음과 같습니다.
<Object ClassID = ClsID : 333C7BC4-460F-11D0-BC04-0080C7055A83
id = dsocomposer 너비 = 0 높이 = 0>
<param name = dataurl value = composer.csv>
</객체>
원격 데이터 서비스 (RDS)
원격 데이터 서비스, 원격 서버 측의 데이터에 직접 액세스하는 Internet Explorer 4.0. RDS는 OLE-DB 또는 OPEN 데이터베이스 연결 (ODBC)을 통해 구현됩니다.
예:
<Object ClassID = ClsID : BD96C556-65A3-11D0-983A-00C04FC29E33
id = dsocomposer 높이 = 0 너비 = 0>
<param name = 서버 값 = http : // musicserver>
<param name = connect value = dsn = music; uid = guest; pwd =>
<param name = sql value = composer에서 compsr_name을 선택하십시오>
</객체>
그러나 클라이언트 가이 코드를 볼 수 있기 때문에 약간의 보안 문제가 발생합니다.
XML 데이터 소스
나는 XML에 대해별로 말하지 않을 것입니다. IE4.0에서 다음과 같이 사용합니다.
<애플릿
코드 = com.ms.xml.dso.xmldso.class
id = xmldso
너비 = 0
높이 = 0
mayscript = true>
<param name = url value = composer.xml>
</애플릿>
Internet Explorer 5 이상은 다음과 같습니다.
<!-[GTE IE 5 인 경우]>
<xml id = xml1>
<Topic-Info>
<page-type> 참조 </page-type>
<Member-type> 속성 </member-type>
<Peristent-name> accesskey </persistent-name>
<runtime-name readable = 1 Writeable = 1> accesskey </runtime-name>
<bollation> 객체의 가속기 키를 설정하거나 검색합니다. </actract>
</topic-info>
</xml>
<! [endif]->
또한 IE는 XML 데이터 섬 : XML 데이터 섬의 개념을 제공합니다.
MSHTML 데이터 소스
HTML 데이터 페이지의 예 :
<h1 id = compsr_first> hector </h1>
<marquee id = compsr_last> berlioz </marquee>
<div id = compsr_birth> 1803 </div>
<h2 id = compsr_first> modest </h2>
<h3 id = compsr_last> moussorgsky </h3>
<버튼 id = compsr_birth> 1839 </button>
<TextRea id = compsr_first> franz </textRea>
<xmp id = compsr_last> liszt </xmp>
<span id = compsr_birth> 1811 </span>
정의되면 다음과 같이 액세스 할 수 있습니다.
<오브젝트 ID = htmlcomposer data = compdata.htm 높이 = 0 너비 = 0>
</객체>
2 단계 : 데이터를 HTML 요소에 바인딩합니다
일반적으로 태그의 DatASRC 및 DataFld를 통해 바인딩됩니다. 예를 들어:
<입력 유형 = 텍스트 박스 DatASRC =#dsocomposes datafld = compsr_last>
그리고
<TABLE DATASRC =#DSOCOMPOSER>
<tr>
<td> <div datafld = compsr_first> </div> </td>
</tr>
</테이블>
이것은 결합 테이블의 예입니다.
http://msdn.microsoft.com/workshop/samples/author/databind/dbtable.htm
그중 데이터 소스 :
<오브젝트 ID = TDCComposers ClassID = ClsID : 333C7BC4-460F-11D0-BC04-0080C7055A83>
<param name = dataurl value = http : //msdn.microsoft.com/workshop/samples/author/databind/composer.csv>
<param name = aideader value = true>
<param name = textqualifier value = '>
</객체>
베인트 테이블
<TABLE DATASRC =#TDCCOMPOSERS>
<thead> <tr style = font-weight : bold>
<td> First </td> <td> 마지막 </td> <td> Birth </td> <td> 죽음 </td> <td> 원산지 </td>
</tr> </head>
<tbody>
<tr>
<td> <div datafld = compsr_first> </div> </td>
<td> <div datafld = compsr_last> </div> </td>
<td> <div datafld = compsr_birth> </div> </td>
<td> <div datafld = compsr_death> </div> </td>
<td> <div datafld = origin> </div> </td>
</tr>
</tbody>
</테이블>
이것이 효과입니다.
첫 번째 생일 사망 기원
Hector Berlioz 1803 1869 프랑스
겸손한 Moussorgsky 1839 1881 러시아
Franz Liszt 1811 1886 프랑스
Antonio Vivaldi 1678 1741 이탈리아
Johann Sebastian Bach 1685 1750 독일
Ludwig van Beethoven 1770 1827 독일
Wolfgang Amadeus Mozart 1756 1791 오스트리아
조셉 하이든 1732 1809 독일
Claude Debussy 1862 1918 프랑스
3 단계 : 데이터의 동적 첨가, 삭제 등 (객체 모델)
물론 결합은 역동적 일 수 있습니다.
대본 :
span1.datasrc = #dsocomposer;
span1.datafld = compsr_first;
HTML은 다음과 같습니다.
<span datasrc =#dsocomposer datafld = compsr_first> </span>
데이터 소스에 액세스 할 수 있습니다.
var orcordset = dsocomposer.recordset;
당연히 Orcordset .movenext 등이 있습니다.
좋다:
<입력 ID = CMDNAVFIRST 유형 = 버튼 값 = <<
onclick = tdccomposes.recordset.moveFirst ()>
<입력 ID = CMDNAVPREV 유형 = 버튼 값 = <
onclick = tdccomposes.recordset.movePrevious ();
if (tdccomposers.recordset.bof)
tdccomposers.recordset.movefirst ();>
<입력 ID = CMDNAVNEXT 유형 = 버튼 값 =>
onclick = tdccomposes.recordset.movenext ();
if (tdccomposers.recordset.eof)
tdccomposers.recordset.movelast ();>
<입력 ID = CMDNAVLAST 유형 = 버튼 값 = >>
onclick = tdccomposes.recordset.movelast ()>
다음과 같이 사용할 수 있습니다.
<script language = vbscript>
rsattendees.fields의 각 objfld에 대해
document.write (필드 이름은 & objfld.name & <br>입니다)
document.write (필드 값은 & objfld.value & <br>입니다)
다음
</스크립트>
추가 및 삭제 레코드는 orcordset.addnew () 및 orcordset.delete ()입니다.
3 단계 : 다양한 데이터 이벤트에 응답 (이벤트 모델)
데이터 변경 후 해당 처리 방법은 무엇입니까?
MSDN에 제공된 방법은 다음과 같습니다.
<cbosort (데이터 소스 이름) event = onchange (이벤트 이름)>에 대한 <스크립트
...
</스크립트>
이벤트 이름 목록입니다.
Internet Explorer 버전에서 소개 된 이벤트 버블 취소 가능한 응용 프로그램
onbeforeupdate 진정한 진정한 바운드 요소 4.0
onafterupdate true false bound elements 4.0
onrowenter true false dso 4.0
OnrowExit True True DSO 4.0
onbeforeunload false false 창 4.0
ondataavailable True False DSO 4.0
ondatasetComplete true false dso 4.0
ondatasetchanged true false dso 4.0
onerrorupdate true true bound elements 4.0
OnreadyStateChange True False DSO 4.0
OncellChange True False DSO 5.0
onrowserted true false dso 5.0
onrowsdelete true false dso 5.0
어때?
http://msdn.microsoft.com/workshop/samples/author/databind/dbevts.htm은 응용 프로그램의 비교적 포괄적 인 예라고 생각합니다. 신중하게 공부하면 무언가를 얻게됩니다.
인터넷에서 페이징을 구현하기 위해 데이터 바인딩을 사용하는 많은 예가 있습니다. 사실, 데이터 바인딩은 더 많은 일을 할 수 있습니까? 풍부한 클라이언트에는 매우 복잡한 데이터 그라이드를 만드는 것과 같은 매우 큰 응용 프로그램이 있어야합니다.
내가 지금 더 이해하고 싶은 것은 클라이언트의 데이터 바인딩이 서버 측에 영향을 미치지 않기 때문에 서버 측과 쉽게 동기화하는 방법입니다 (서버 측에서 데이터 소스를 생성 할 수 있지만 클라이언트의 작동은 자동으로 서버로 돌아 오지 않습니다). MSDN은 RDS가 괜찮다고 말했지만이 방법은 너무 어색하고 안전하지 않습니다.