//BBQ使用的变量声明
var bbqQueryCondition = {};
//当前页码
var currentPageIndex;
//首次加载列表标记
var firstLoad = true;
//定义全局变量
var termId = "";
//"类型"选择
var parentTermId;
//"认证项目"
var childTermId;
//点击"认证类型"时的flag标示
var flag = true;
/**
* 界面ready时默认操作
* 三个主方法可以再调用具体细分的方法
*/
$(function() {
//页面UI初始化
initUI();
// 添加页面监听
initListener();
});
/**
* 界面布局及样式调整
* <p>
* 界面的大部分样式已经在CSS中定义好,这里主要是添加一些需要JS控制的特殊样式<br>
* 比如表格中底色单行深双行浅等
*/
function initUI() {
//读取参数,优先取BBQ中参数
bbqQueryCondition = NAVI.bbq.getState();
//从BBQ中获取传入到action侧的termId, 如果没有说明是第一次访问"考试大纲"
if(typeof bbqQueryCondition["termId"] == "undefined"){
termId = "defaultAllType";
}else{
termId = bbqQueryCondition["termId"];
}
currentPageIndex = bbqQueryCondition["beginPage"] || 0;
//获取bbq中存取的存入的childTerm和ParentTermId
childTermId = bbqQueryCondition["childTermId"];
parentTermId = bbqQueryCondition["parentTermId"];
if(typeof bbqQueryCondition["parentTermId"] == "undefined"){
parentTermId = "defaultAllType";
}
//给"认证类型"添加样式
$("#"+parentTermId).addClass("selected");
//依据"类型"的termId来动态获取
getexamOutlineChildTerm(parentTermId);
//给"认证项目"添加样式
if(typeof bbqQueryCondition["childTermId"] == "undefined" ){
childTermId = "defaultAll";
}
$("#exam_outline_records").empty('');
//如果用户选择的是"认证项目"中的全部,则需要传递其父termId,作为参数传递到action侧查询数据
if(termId == "defaultAll"){
termId = parentTermId;
}
queryData(termId);
}
//点击页面考试大纲的标题转向到其详细页面。
function loadExamOutlineDetail(nodeId){
NAVI.forward('spte-exam-outline-show',{nodeId:nodeId}, true);
}
/**
* 添加页面监听
* <p>
* 比如选择"类型"或者选择"认证"件,重新刷新页面数据<br>
* 由于页面数据是实时刷新的,很多时候需要对某一类元素添加事件,<br>
* 那么后加入的元素可能未能绑定。<br>
* 所以这里的事件绑定,对于一开始就存在界面上的元素,使用本身的绑定函数<br>
* 对于动态添加的元素,使用$.live绑定事件。
*/
function initListener(){
//监听页面"类型"事件
$("a[name='resourceType']").die().live("click", function() {
//用户切换"类型"时,需要重新改变
$("a[name='resourceType']").removeClass("selected");
$(this).addClass("selected");
termId = $(this).attr("id");
//切换"类型"后加载列表第一页
currentPageIndex=0;
//向BBQ中存放当前用户选择的"类型"对应的termId;
bbqQueryCondition["termId"] = termId;
bbqQueryCondition["beginPage"] = 0;
//记入所选的"类型"
bbqQueryCondition["parentTermId"] = termId;
parentTermId = termId;
//当用户切换"类型"时,默认"认证类型"选择"全部",记入到BBQ。
if(flag){
childTermId = "defaultAll";
}else{
childTermId = getSelectedChildTermId();
}
if(typeof childTermId == "undefined" || childTermId == ""){
childTermId = "defaultAll";
}else if(childTermId != "defaultAll"){
termId = childTermId;
}
bbqQueryCondition["childTermId"] = childTermId;
bbqQueryCondition["isExamOutlineOrSimExam"] = "examOutline";
NAVI.bbq.pushState(bbqQueryCondition);
//根据"类型",动态的加载"认证类型"的显示
getexamOutlineChildTerm(parentTermId);
//加载列表页面。
queryData(termId);
});
//监听页面"认证项目"事件
$("a[name='certiResType']").die().live("click", function() {
$("a[name='certiResType']").removeClass("selected");
$(this).addClass("selected");
termId = $(this).attr("id");
//切换"认证类型"后加载列表第一页
currentPageIndex=0;
//向BBQ中存放当前用户选择的"类型"对应的termId;
bbqQueryCondition["termId"] = termId;
bbqQueryCondition["beginPage"] = 0;
//向BBQ中记入用户选择的"类型"
bbqQueryCondition["parentTermId"] = getSelectedParentTermId();
//向BBQ中记入用户选择的"认证类型"对应的termId, 用于BBQ回退时样式调整用
bbqQueryCondition["childTermId"] = termId;
childTermId = termId;
bbqQueryCondition["isExamOutlineOrSimExam"] = "examOutline";
NAVI.bbq.pushState(bbqQueryCondition);
if(termId == "defaultAll"){
termId = getSelectedParentTermId();
}
queryData(termId);
});
}
//获取用户选取的"类型"对应的termId
function getSelectedParentTermId(){
var id = "";
$("a[name='resourceType']").each(function(){
if($(this).hasClass("selected")){
id = $(this).attr("id");
}
});
return id;
}
//获取用户选取的"类型"对应的termId
function getSelectedChildTermId(){
var id = "";
$("a[name='certiResType']").each(function(){
if($(this).hasClass("selected")){
id = $(this).attr("id");
}
});
return id;
}
/**
* ajax 异步获取下拉框中需要展现的内容 <传入的参数待定>
*/
function getexamOutlineChildTerm(termId){
var param= '{"termId":"'+termId+'"}';
$.ajaxSetup({cache:true});
$.ajax({
cache: true,
type: "POST",
url: "Certificate!getTermChildByTermId.action",
data: $.parseJSON(param),
dataType: "json",
success: function(childTerms){
$("#eo_sel_type").empty();
var str = "";
$.each(childTerms, function(i, n){
str += "<span style='line-height: 22px;float: left;dispaly: inline-block;'>";
str += "<a href='javascript:void(0)' name='certiResType' id='"+childTerms[i].id+"' value='"+childTerms[i].value+"'>"+childTerms[i].value+"</a>";
str += "</span>";
});
$("#eo_sel_type").append(str);
$("#"+childTermId).addClass("selected");
}
});
}
function queryData(param){
var param= '{"termId":"'+termId+'","isExamOutlineOrSimExam":"examOutline"}';
var lock_screen = new sui.cbb.blockUI();
lock_screen.block(true);
$.ajaxSetup({cache:true});
$.ajax({
cache: true,
type: "POST",
url: "Certificate!getResultTotalRow",
data: $.parseJSON(param),
dataType: "json",
success: function(data){
if(data.totalRow <1){
$("#exam_outline_records").empty();
$("#examOutlinePaging").empty();
var inner = "<ul class='re_container'>";
inner+="<li class=re_content style='color:red;width: 100%;padding-top: 10px;'>"+$("#noData").val()+"</li>";
inner+="</ul>";
$("#exam_outline_records").html(inner);
new sui.cbb.initPaginationByIndex($("#examOutlinePaging"), data.totalRow, 10, parseInt(currentPageIndex),doNothing);
}else{
//cbb分页控件
new sui.cbb.initPaginationByIndex($("#examOutlinePaging"), data.totalRow, 10, parseInt(currentPageIndex),examOutlineCallback);
}
new sui.cbb.blockUI().unBlock();
},
error : function() {
var errorEx = $("#queryError").val();
$("#exam_outline_records").html(errorEx);
new sui.cbb.blockUI().unBlock();
}
});
}
function doNothing(){}
//输出类容
function refreshTable(arrayData){
if(!arrayData){
return false;
}
var strTrData = "<table width='100%' border='0' cellspacing='0' cellpadding='0' style='padding-top: 10px;' id='listTable'>";
for(var i=0 ; i<arrayData.length; i++)
{
strTrData += "<tr><td style='font-size:12px; color:#900; line-height:22px;padding-top:5px;'><a href='javascript:loadExamOutlineDetail(\""+arrayData[i].id+"\")';><span style='color:#900;'>" +encodeHtml( arrayData[i]['name']) + "</span></a></td></tr>";
strTrData += "<tr><td class='intro enterprise_td' title='"+encodeHtml(arrayData[i]['abstracts'])+"'>"+ encodeHtml(arrayData[i]['abstracts']) +"</td></tr>";
}
strTrData += "</table>";
$("#exam_outline_records").empty();
$("#exam_outline_records").append(strTrData);
}
//分页控件之回调函数,其中 currentPage 此变量从0开始递增
function examOutlineCallback(currentPage, pageSize)
{
//判断是否是第一次加载内容。
if(firstLoad) {
firstLoad=false;
}else {
//如果不是第一次加载列表,把查询参数写入BBQ
bbqQueryCondition["termId"] = termId;
bbqQueryCondition["beginPage"] = currentPage;
bbqQueryCondition["isExamOutlineOrSimExam"] = "examOutline";
bbqQueryCondition["childTermId"] = childTermId;
bbqQueryCondition["parentTermId"] = parentTermId;
NAVI.bbq.pushState(bbqQueryCondition);
}
var begin = currentPage * pageSize + 1;
var queryParam={};
queryParam["termId"]=termId;
queryParam["beginPage"]=begin;
queryParam["pageSize"]=pageSize;
queryParam["isExamOutlineOrSimExam"] = "examOutline";
//传入的参数需要待确定
var param= '{"termId":"'+termId+'","isExamOutlineOrSimExam":"examOutline","beginPage":"'+begin+'","pageSize":"'+pageSize+'"}';
$.ajax({
cache: false,
type: "POST",
url: "Certificate!getResultList",
data: queryParam,
dataType: 'json',
success: function(data)
{
//刷新数据展现区域数据
refreshTable(data);
new sui.cbb.blockUI().unBlock();
},
error: function(){
var errorEx = $("#queryError").val();
$("#exam_outline_records").html(errorEx);
new sui.cbb.blockUI().unBlock();
}
});
}
详细解决方案
bbq运用实例二
热度:114 发布时间:2013-01-01 14:04:18.0
相关解决方案