제발 당신이 나에게 고전적인 ASP와 아약스의 예를 제안 해 의존적 인 콤보를 만들 수 있습니까?종속 콤보?
종속 콤보?
답변
AJAX의 개념이 공식화되기 오래 전에이 기능을 구현하기 위해 XML Data Islands이라는 기술을 사용했습니다. 분명히 유사한 결과를 얻을 수있는 AJAX 프레임 워크와 스크립트가 많이 있지만, 이것은 내가 지난 몇 년 동안 레거시 애플리케이션에서 사용해 왔던 테스트를 거친 기술 일뿐입니다.
나는 적당한 기사를 빨리 찾을 수 없기 때문에, 나는 나의 오래된 코드를 파 냈다. 기본적으로 부모 컨트롤의 값을 설정하면 별도의 ASP 페이지에 요청을 보내는 자바 스크립트를 실행합니다. 이 페이지는 자식 컨트롤을 채우는 데 사용할 데이터를 결정하기 위해 DB를 쿼리합니다.
이 두 번째 페이지는 결과를 XML로 반환합니다.이 결과는 기본 페이지의 XML Data Island에 저장되고 조작됩니다. 그런 다음 호출하는 javascript는 반환 된 XML을 파싱하고 자식 컨트롤을 채 웁니다.
먼저 우리는 기본 컨트롤에서 자바 스크립트 호출이 : 그럼
<tr>
<td>Customer:</td>
<td>
<select id="CustomerID" NAME="CustomerID"
onfocus="javascript:populateCombo(fProcess.CustomerID.value)"
onChange="javascript:populateCombo(fProcess.CustomerID.value)"
onkeypress="javascript:populateCombo(fProcess.CustomerID.value);">
</select>
</td>
</tr>
<tr>
<td>Depot:</td>
<td>
<select name="depot" id="depot" size="1" alt="Depot">
<option value="" selected ><Select Depot></option>
</select>
</td>
</tr>
우리가합니다 (DB에서 데이터를 검색) 두 번째 페이지를 호출하게 자바 스크립트 :
// Fill combo with XML data
function populateCombo(par) {
var currNode;
XMLID.async = false;
// Change Data Island source
strQuery = "Select LocationID, LocationName from Locations where CustomerID='" + par + "' and Active = 1 Order By LocationName";
XMLID.SRC="/fxdb/common/xmlQuery.asp?strQuery=" + strQuery;
// Get all "names" from XML data
objNodeList = XMLID.getElementsByTagName("LocationName");
objNodeListID= XMLID.getElementsByTagName("LocationID");
// Fill combo with names
for (var i=0; i < objNodeList.length; i++) {
fProcess.depot.options[i]=new Option(objNodeList.item(i).text,objNodeListID.item(i).text);
}
// Delete extra entries
while (objNodeList.length < fProcess.depot.options.length) {
fProcess.depot.options[(fProcess.depot.options.length - 1)] = null;
}
}
을
마지막으로 DB 자체를 쿼리하는 페이지입니다.
<%@ Language="VBScript" %>
<%
' Declare all variables.
Option Explicit
Dim strSql,objRS,objField
Dim sConn, oConn
Dim strName, strValue
' Buffer and output as XML.
Response.Buffer = True
Response.ContentType = "text/xml"
' Start our XML document.
Response.Write "<?xml version=""1.0""?>" & vbCrLf
' Set SQL and database connection string.
set oConn=server.createobject("adodb.connection")
sConn=Application("Connection")
oConn.Open sConn
strSQL = Request.QueryString("strQuery")
set objRS=oConn.execute(strSQL)
' Output start of data.
Response.Write "<database>" & vbCrLf
' Loop through the data records.
While Not objRS.EOF
' Output start of record.
Response.Write "<record>" & vbCrLf
' Loop through the fields in each record.
For Each objField in objRS.Fields
strName = objField.Name
strValue = objField.Value
If Len(strName) > 0 Then strName = Server.HTMLEncode(strName)
If Len(strValue) > 0 Then strValue = Server.HTMLEncode(strValue)
Response.Write "<" & strName & ">" & vbCrLf
Response.Write strValue & vbCrLf
Response.Write "</" & strName & ">" & vbCrLf
Next
' Move to next city in database.
Response.Write "</record>" & vbCrLf
objRS.MoveNext
Wend
' Output end of data.
Response.Write "</database>" & vbCrLf
%>
편집 : 죄송합니다. 아주 중요한 XML 데이터 아일랜드 자체를 잊어 버렸습니다.이 태그를 Body 태그 뒤에 추가하십시오.
<!-- Data Island-->
<XML ID="XMLID"></XML>
"Asp Combobox ajax"에서 누락 된 단어가 "계단식"이라고 생각합니다. 하나의 combox에서 사용할 수있는 항목 집합이 이전 combox 또는 다른 필드에서 선택한 값에 따라 달라지는 개념.
ASP만으로는이 간단한 간단한 예제가없는 것 같습니다. 그러나 jquery와 함께이 링크를 시도해 볼 수 있습니다 (jquery.cascade cascading values from forms).
이렇게하면 필요한 간단한 JSON을 생성하는 ASP 페이지 만 만들면됩니다.
예 안토니, "계단식 콤보 박스"를 찾고 있습니다! 개념은 이것입니다. 그러나 asp.net이 아닌 classic ASP에서 코드 예제를 찾고 싶습니다. – Davide
@Davide : 페이지의 내용이 ASP가 아닌 ASP.NET임을 알지 못했습니다. 이것에 대한 간단한 예가 Classic에는없는 것 같습니다. – AnthonyWJones
solution using ajaxed에 관심이있을 수 있습니다.
- 1. 하나의 콤보 상자가 WPF의 다른 콤보 상자에 종속 됨
- 2. 종속 jqGrid의 ComboBox
- 3. 2 종속 콤보 (ZK 프레임 워크)가있는 ConcurrenModificationException
- 4. 다른 종속 종속 속성
- 5. 종속 속성
- 6. 종속 필드에 대한 ASP.NET DynamicData 편집 논리
- 7. 사용자 종속 파일 내용
- 8. 구성 종속 어셈블리 참조
- 9. WPF 종속 속성 질문
- 10. 종속 MySQL은 SELECT
- 11. 함수에 종속 관계 유지
- 12. 종속 드롭 다운 목록
- 13. SQL 쿼리 종속 열
- 14. 마이그레이션 ": 종속"옵션
- 15. $ script.js 중첩 된 종속
- 16. ActiveRecord 종속 모델 저장
- 17. JTable의 종속 열
- 18. 종속 선택 양식
- 19. 자바 종속 목록이 객체
- 20. VB.NET의 종속 형식
- 21. 종속 개체 MySQL
- 22. 종속 관계 질문
- 23. 종속 파일 구문 표현
- 24. POM의 다중 종속 범위
- 25. MySQL에서 종속 테이블 결정?
- 26. 종속 템플릿 매개 변수
- 27. 종속 오브젝트의 콜렉션 업데이트
- 28. 종속 드롭 다운 상자
- 29. 종속 삽입 문
- 30. 종속 파일 삭제하기
참고 XML 아일랜드는 IE 전용 개념이지만 XmlHTTPRequest를 사용하여 일반 원칙을 적용 할 수 있습니다. – AnthonyWJones
안녕하세요, CJM, 정말 고마워요 ... 정확히 내가 뭘 찾고 있었는지 ...하지만 내게이 자바 스크립트 오류 준다 : "XMLID가 정의되지 않았습니다"... 어떻게해야합니까? – Davide
AH 죄송합니다. 위를 참조하십시오. – CJM