|
效果圖如下:
解決思路:
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();
}
JavaScript技術:xml分頁+ajax請求數據源+dom取結果實例代碼,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。