먼저 어떤 방법을 사용할지 고민하고 세 가지 방법을 고려합니다. 1. C#으로 HTML을 결합하여 테이블을 구성하고, 수정 및 저장은 Ajax를 통해 구현합니다. 2. XML XSL, 표시 및 수정은 두 개의 XSL 파일을 사용하여 수행되며 Ajax는 XML을 수정하고 저장하는 데 사용됩니다. 3. GridView 컨트롤. 신중하게 고려한 결과, 우선 세 번째 옵션인 GridView 컨트롤은 XML 형식이 다양하고 행과 열 병합, 행과 열 머리글 병합이 많이 포함될 수 있기 때문에 요구 사항을 충족할 수 없습니다. 첫 번째 옵션은 너무 번거롭습니다. 앉으면 자세하고 육체적인 작업이 필요하며 요구 사항이 변경된 후 수정하기가 어렵습니다. 따라서 두 번째 옵션을 선택하십시오. XPath 및 XSLT 학습을 시작하세요. AJAX는 js를 사용하여 일반적인 파일 처리 방법(ashx)을 비동기식으로 호출합니다. 1. 선택 상자 바인딩(Ajax를 통해 데이터베이스 읽기 및 데이터 바인딩)을 구현할 때 오류가 발생했습니다. 최종적으로 XML을 읽을 때 사용하는 비동기 방식이 Ajax와 충돌하는 것으로 나타났으며 이는 동기화를 통해 해결할 수 있습니다. . 2. XML을 저장합니다. 수정된 데이터를 XML로 저장하는 방법은 무엇입니까? Javascript로 저장할 때 js를 저장할 수 없는데, AJax로 저장할 때 hta를 사용해야 하는데, 수정된 XML을 AJAX 메서드에 어떻게 전달할 수 있을까요? 드디어 해봤습니다. 소스코드 js:
var $=function (id){return document.getElementById(id);}
var xmlHttp;
var curControl;
var curValue(){
var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.load("myxml.xml")
var xsl = new ActiveXObject("Microsoft. XMLDOM");
xsl.async = false;
xsl.load("myxsl_edit.xsl");
document.write(xml.transformNode(xsl));
document.close() ;
//선택 상자 바인딩
LoadSelect();
}
//xml 저장
function Save(){
var oDoc = new ActiveXObject("MSXML2.DOMDocument.3.0 ");//응답 결과를 가져오는 역할
oDoc.async = false;
oDoc.resolveExternals = false;
oDoc.load("myxml.xml");
var data = oDoc . selectNodes("//Data[@IsEdit='1']");//요청한 주요 클래스가 속한 모든 소규모 클래스의 클래스 이름을 읽습니다
for(var i=0; i < data. length; i )
{
var nodeEdit;
var nodeType
for(var j=0; j
{ if(data[i].attributes[j].nodeName=="IsEdit") { nodeEdit = data[i].attributes[j].nodeValue } else if(data[i].attributes[j].nodeName=="id") { nodeID = data[i].attributes[j].nodeValue } else if( data[i].attributes[j].nodeName=="Type") { nodeType = data[i].attributes[j].nodeValue; } } if (nodeType=="Combox") { var 콤보x = $(nodeID) if(combox!=null) { if(combox.options. 길이>0) data[i].text = 콤보x.options[combox.selectedIndex].value } } else { data[i].text; = $(nodeID ).value; } } var strXML = oDoc.xml; var url="saveXML.ashx" StartRequest(url,null,AfterEdit,strXML) ,"POST" ; if(xmlHttp.status==200) { var rtn = xmlHttp.responseText if(rtn=="true") { Alert("저장이 완료되었습니다! "); } else { alert("저장에 실패했습니다!"); } Show(); } } } function Show() { // XML 로드 var xml = new ActiveXObject("Microsoft.XMLDOM"); xml.async = false xml.load("myxml.xml") // XSL 로드 var xsl = new ActiveXObject(" Microsoft.XMLDOM"); xsl.async = false; xsl.load("myxsl.xsl"); document.write(xml.transformNode(xsl)); document.close () } /////////////////绑择框/////////////// //////// 함수 LoadSelect() { var allcontrols = document.all for(var j=0;j { if(allcontrols[j].tagName=="SELECT") { var datainfo = allcontrols[j].flex //datainfo:tablename^value^name^selectedvalue var datainfo_sp = datainfo.split('); if(datainfo_sp.length>2) { var selectID = datainfo_sp[0] var selectedValue = datainfo_sp [2]; var datainfo_sp_sp = datainfo_sp[1].split('^'); var table = datainfo_sp_sp[0] var value = datainfo_sp_sp[1]; datainfo_sp_sp[2]; var control = $(selectID) var param = "table=" table "&value=" value "&text=" text; curControl = 제어; curValue = selectedValue; var 콜백 = BindSelect; StartRequest("getDataSet.ashx", param, BindSelect,null,"GET"); } } } } function BindSelect() { //可以不用下face两个if语句,没有异步方式 if(xmlHttp .readyState==4) { if(xmlHttp.status==200) { var control = curControl; var selectedValue = curValue; var data = xmlHttp.responseText; if(data != null || data !="") { control.add(new Option("","")); var data_sp = data.split('); for(var i=0; i{ var data_sp_sp = data_sp[i].split('^'); if(data_sp_sp.length>1) control.add(new Option(data_sp_sp[1], data_sp_sp[0])); } for(var i =0;i{ if(control.options[i].value == selectedValue) { control.selectedIndex = i; 휴식; } } } } } } //////////////////绑定下选择框//////////////////////// ///////////////////实现Ajax/ //////////////////////// function StartRequest(url,param,callback,sendString,type) { if (window.XMLHttpRequest) { xmlHttp=new XMLHttpRequest();//mozilla浏览器 } else if(window.ActiveXObject) { 시도 { xmlHttp=new ActiveXObject("MSXML2.XMLHTTP");//IE旧版本 } catch(e) { try { xmlHttp=new ActiveXObject ("Microsoft.XMLHTTP");//IE新版本 } catch(e) { } } if(!xmlHttp) { window.alert("불변합니다.XMLHTTPREQUEST가 없습니다!"); 거짓을 반환합니다. } } var strURL = url (param != "" && param!=null ? "?" param : ""); sendString = "param=" sendString; xmlHttp.open(type,strURL,false); xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded") xmlHttp.onreadystatechange=callback; xmlHttp.send(sendString); } xml 统计 |
类别 | 系数 | 分析 |
比例1 | 比例2 | 比例3 | 比例4 | 比例5 | 比例6 | 比例7 |
红 | 1 | 01 | 5.0 | 2009-10-05 | 21111 | 21 | 21 | 21 |
2 | 2 | 3 | 4 | 4 | 2 | 2 | 2 |
3 | 1 | 2 | 4 | 4 | 2 | 1 | 1 |
小计: |
绿 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 |
5 | 4 | 4 | 4 | 4 | 2 | 4 | 4 |
6 | 3 | 4 | 4 | 4 | 2 | 3 | 3 |
7 | 4 | 4 | 4 | 4 | 4 | 4 | 4 |
8 | 4 | 4 | 4 | 4 | 3 | 4 | 4 |
9 | 4 | 4 | 4 | 4 | 1 | 5.0 | 2009-10-14 |
小计: |
蓝 | 10 | 4 | 4 | 4 | 4 | 1 | 5.0 | 2009-10-14 |
11 | 4 | <셀 유형="콘텐츠"> 4 셀> <셀 유형="콘텐츠"> 4 셀> <셀 유형="콘텐츠"> 4 셀> <셀 유형="콘텐츠"> 1 셀> <셀 유형="콘텐츠"> 5.0 셀> <셀 유형="콘텐츠"> 2009-10-14 셀> 행> <행> <셀 유형="콘텐츠"> 12 셀> <셀 유형="콘텐츠"> 4 셀> <셀 유형="콘텐츠"> 4 셀> <셀 유형="콘텐츠"> 4 셀> <셀 유형="콘텐츠"> 4 셀> <셀 유형="콘텐츠"> 1 셀> <셀 유형="콘텐츠"> 5.0 셀> <셀 유형="콘텐츠"> 2009-10-14 셀> 행> <행> 작은 내용: 셀> 행> 테이블> 콘텐츠> 显示页的xsl
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <헤더> 테이블 데모 <본문> |