xml分頁+ajax請求資料來源+dom取結果執行個體代碼_javascript技巧

來源:互聯網
上載者:User

效果圖如下:

解決思路:
1.單擊[選擇]時,根據當前選擇(下拉框)的分類ID,使用ajax請求,取得資料來源(服務端使用dataSet.getXml()輸出,因為資料量不是很大,所以就偷懶了)
2.用戶端使用xml資料島分頁顯示(使用資料島分頁比較簡單,不用寫太多的代碼)
3.搜尋時,根據當前選擇(下拉框)的分類ID,和搜尋索引鍵,重新使用ajax請求(好像也可以使用xml的結果過濾,但為了方便,重新請求算了),跳到第2步顯示
4.取資料時,單擊某行時,使用onclick事件,把當前行的tr做為參數,使用dom操作就可以得到tr裡的td的值
附:由於沒考慮到其它細節的問題,所以代碼有點亂,希望各位能多多指導,各位的批評就是我進步的最好的捷徑.謝謝
貼出全部代碼,希望能和大家相互交流一下
index.html 顯示頁面:
<select id="productID" onchange="changeID()" NAME="productID">
<option value="1" selected>1111</option>
<option value="2">2222</option>
<option value="3">3333</option>
</select><br>
<table>
<tr>
<td><input id="selectValue" type="text" size="40"></td><td><a href='#' onclick='show()'><img src='img/btnSelect.gif' /></a></td>
</tr>
</table>
<div id="selectData"></div>
<input id="abc" type="text" size="50%" />
data.js 所有操作js代碼
var xmlHttp;
var xmlContent; //ajax請求後返回儲存的資料
var key = "";
var id = "";
//---------------------樣式設定------------------//
var divid = "selectData" //說明第4步
var txtValueID = "selectValue"; //說時第2步
var fieldNames = new Array(3); //單擊某行取值是,每列值前添加一個該值列名
var isShowFieldNames = true; //取值時,是否要顯示列名 true為顯示,false不顯示
fieldNames[0]="編號:";
fieldNames[1]="使用者名稱:";
fieldNames[2]="密碼:";
var pageSize = 10; //每頁顯示行數
var onmouseoverBG = "#DDFFEC"; //滑鼠移上去該行的背景顏色
var onmouseoutBG = "#ffffff"; //滑鼠離開後該行的背景顏色
//表頭列名根據需要修改
var tableHead = "<thead style='background: #DDFFEC;'>";
tableHead += "<th>編號</th>";
tableHead += "<th>使用者名稱</th>";
tableHead += "<th>密碼</th>";
tableHead += "</thead>";
//資料繫結欄位名,修改DATAFLD裡的的欄位名
var dataFiled = "<td style='border-top: 1px solid #B9E2CC;'><div DATAFLD='F_id'></div></td>";
dataFiled += "<td style='border-top: 1px solid #B9E2CC;'><div DATAFLD='F_userName'></div></td>";
dataFiled += "<td style='border-top: 1px solid #B9E2CC;'><div DATAFLD='F_passWord'></div></td>";
var RequestFile = "getXml1.aspx"; //請求頁面
//-------------------外部調用--------------------------//
//顯示選擇
//productID是下拉框ID,請根據需要修改
function show()
{
$(divid).style.display = ''
$(divid).style.position="absolute"
$(divid).style.backgroundColor="#FFFFFF"
key = "";
id = productID.options[productID.selectedIndex].value;
RequestXML();
}
//分類改變時隱藏
function changeID()
{
hide();
}
//---------------------內部方法,一般不用修改---------------------------//
//選擇某行的值,顯示到文字框
function getCurrentRowData(tr)
{
var tds = tr.getElementsByTagName("td") //得到所有列
var result="";
for(var i = 0; i < tds.length; i++)
{
if(isShowFieldNames){result += fieldNames[i]};
if(i != tds.length -1 )//是否是最後一列
{
result += tr.getElementsByTagName("div")[i].firstChild.nodeValue + ","; //得到第i列的值 + ","
}
else
{
result += tr.getElementsByTagName("div")[i].firstChild.nodeValue; //得到第i列的值
}
}
$(txtValueID).value = result;
hide();
}
//顯示內容
function ShowData()
{
var data = $(divid);
var content = "<div id=\"main\" style='border: 1px solid #009966;width:300px;font-size:13px';>";
content += "<div id=\"searchMain\">";
content += "<table><tr><td><input style='border: 1px solid #B9E2CC;' id=\"key\" type=\"text\" /></td><td><a href='#' onclick='Search()'><img style='border:0px;' src='img/btnSearch.gif' /></a></td><td><a href='#' onclick='hide()'><img style='border:0px' src='img/btnCancel.gif' /></a></td></tr></table>";
content += "</div>";
content += "<xml id=\"data_souce\">" + xmlContent + "</xml>";
content += "<div id='resultxml'>"
//----------------翻頁操作-----------------------//
content += "<table CELLPADDING=0 CELLSPACING=0 width='100%'><tr><td>"
content += "<a href=\"#\" onclick=\"GotoPage('first')\"><img style='border:0px;' src='img/btnFirst.gif'/></a> ";
content += "<a href=\"#\" onclick=\"GotoPage('previous')\"><img style='border:0px;' src='img/btnPrevious.gif'/></a> ";
content += "<a href=\"#\" onclick=\"GotoPage('next')\"><img style='border:0px;' src='img/btnNext.gif'/></a> ";
content += "<a href=\"#\" onclick=\"GotoPage('last')\"><img style='border:0px;' src='img/btnLast.gif'/></a>";
content += "</td>"
content += "<td align='rigth' style='font-size:13px'><span style='color:red' id='page'>1</span><span id='compart'></span><span id='pages'></span>"
content += "</td></tr></table>"
//----------------資料來源-----------------------//
content += "<table style='text-align:center;font-size:13px;border: 1px solid #B9E2CC;' width='300px' CELLPADDING=0 CELLSPACING=0 id=\"datas\" DATASRC=\"#data_souce\" DATAPAGESIZE=" + pageSize + ">";
//----------------列名-----------------------//
content += tableHead;
content += "<tr style=\"cursor:hand\" onmouseover=\"this.bgColor='" + onmouseoverBG + "'\" onmouseout=\"this.bgColor='" + onmouseoutBG + "'\" onclick=\"getCurrentRowData(this)\">";
content += dataFiled;
content += "</tr>";
content += "</table>";
content += "</div>"
content += "</div>"
data.innerHTML = content;
GetPages();
}
//得到總頁
function GetPages()
{
var rowCount = $("data_souce").getElementsByTagName("Table"); //得到所有table節點,得到總記錄數
$("pages").innerHTML = Math.ceil(rowCount.length / pageSize);
$("compart").innerHTML = "/";
if(rowCount.length == 0)
{
$("resultxml").innerHTML = "找不到相關資料";
}
}
//首頁時得到當前頁
function firstPage()
{
$("page").innerHTML = 1;
}
//上頁時得到當前頁
function previousPage()
{
if($("page").innerHTML != "1")
{
$("page").innerHTML = parseInt($("page").innerHTML) - 1;
}
}
//下頁時得到當前頁
function nextPage()
{
if($("page").innerHTML != $("pages").innerHTML)
{
$("page").innerHTML = parseInt($("page").innerHTML) + 1;
}
}
//尾頁時得到當前頁
function lastPage()
{
$("page").innerHTML = $("pages").innerHTML;
}
//翻頁操作
function GotoPage(page)
{
switch(page)
{
case "first":
{
datas.firstPage();
firstPage();
break;
}
case "previous":
{
datas.previousPage();
previousPage();
break;
}
case "next":
{
datas.nextPage();
nextPage();
break;
}
case "last":
{
datas.lastPage();
lastPage();
break;
}
}
}
//搜尋
function Search()
{
key = $("key").value;
if(key == "")
{
alert("請輸入搜尋索引鍵");
return;
}
RequestXML();
}
//根據ID得到對象
function $(id)
{
return document.getElementById(id);
}
//隱藏選擇
function hide()
{
$(divid).style.display ="none";
}
//建立XMLHttpRequest
function CreateXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
//請求
function RequestXML()
{
var url = RequestFile + "?id=" + id + "&key=" + key;
CreateXMLHttpRequest();
xmlHttp.open("get",url);
xmlHttp.onreadystatechange = GetXMLResult;
xmlHttp.send(null);
}
//接收
function GetXMLResult()
{
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
xmlContent = xmlHttp.responseText;
ShowData();
}
}
else
{
$(divid).innerHTML = "正在讀取資料中";
}
}
getXml.aspx 服務端資料來源
private void Page_Load(object sender, System.EventArgs e)
{
Response.Write(GetData());
Response.End();
}
private string GetData()
{
string id = Request.QueryString["id"];
string key = Request.QueryString["key"];
string sql = "select * from T_user where F_id = " + id;
if (key.Length > 0){sql += " and F_id like '%" + key + "%'or F_passWord like '%" + key + "%' or F_userName like '%" + key + "%'";}
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version=\"1.0\"?>");
SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=sa;database=WebTest");
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close();
sb.Append(ds.GetXml());
return sb.ToString();
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.