代码改变世界

b/s 进度条(jquery,c#)

2010-11-25 09:19  cnb_mtime  阅读(681)  评论(5编辑  收藏  举报

 

$(".window_iframe").progress({//详细参数参照插件内部参数填写
//back_width: "470", //背景宽度,不设置则取默认选择器的容易大小
//back_height: "500", //背景高度
r_count_url: "YWsupplyHandler.ashx?action=getcountdoMapping&solution=" + pc + "&ids=" + ids,
r_num_url:
"YWsupplyHandler.ashx?action=getprogress&bz=doMapping",
success:
function(state) {
//CallFun_1(state);
}
});

这个个头一回启动处理线程的代码,注意要写到Global.asax里面去,目的是保持线程的生命周期

 

/// <summary>
/// BeginRequest 事件发出信号表示创建任何给定的新请求。此事件始终被引发,并且始终是请求处理期间发生的第一个事件。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Application_BeginRequest(object sender, EventArgs e)
{
string action = Request.QueryString["action"];//截取请求
pharseStr(action);//判断请求触发事件,此处目的是截取异步请求
}

private void pharseStr(string cmd)
{
switch (cmd)
{
case "impsbTree":
impsbtree();
break;
default:
break;
}
}

private void impsbtree()
{

parm p
= new parm();
p.path
= Request.QueryString["serverpath"];
p.userid
= Request.QueryString["userid"];
p.gcNodeid
= Request.QueryString["gcNodeid"];
ThreadPool.QueueUserWorkItem(
new WaitCallback(impSbTreeByThread), p);//启动处理线程

Response.Write(
"ok");
Response.End();
}

private void impSbTreeByThread(object p2)
{
ImpSbTree_Excel impex
= new ImpSbTree_Excel();
parm p
= (parm)p2;
impex.OpenExcel(p.path, p.userid, p.gcNodeid);//在此处循环操作数据库
}

class parm
{
public string fat_id;
public string path;
public string userid;
public string serverPatch;
public string gcNodeid;
}

class parmDomap
{
public string ids;
public string folderid;
public string solution;
public string where;
public string pa;
public string ywid;
public string userid;
}

 

 

 

 

/*
* progress
* 页面进度条效果 ldp
*/
(
function($) {
$.fn.progress
= function(options) {

var defaults = {
text:
"正在加载......", //
result_text: "共{0}条数据,已处理{1}条", //
r_count_url: "", //获取文件数据总数
r_num_url: "", //递归获取的数据处理条件
pro_width: "300", //进度条图片宽度
pro_height: "10", //进度条图片高度
pro_top: "", //进度条的绝对位置
pro_left: "", //进度条的绝对位置
back_width: "", //背景宽度
back_height: "", //背景高度
backcolor: "#CCCCCC", //整个背景颜色
opacity: "0.2", //背景颜色的透明度0.1-1.0
imgpath: "../UI/11.gif", //进度条的背景图片
pro_border: "1px solid blue", //进度条的边框颜色
font_back_color: "#FFF", //字体背景颜色
font_color: "#000", //字体颜色
success: function() { }
}

var options = $.extend(defaults, options);

this.each(function() {
var flag = true;
var clearTime = "";

var height = "";
var width = "";

var thispro = $(this);

height
= thispro.height();
width
= thispro.width();

var COUNT = 0; //待处理数据总数
if (options.back_height != "") {//如果背景高度不为空,则取设置值
height = options.back_height;
}
if (options.back_width != "") {//如果背景宽度不为空,则取设置值
width = options.back_width;
}
if (options.pro_top == "") {//计算进度条的位置,距离顶端
options.pro_top = (height / 2) - (options.pro_height / 2) - 30;
}
if (options.pro_left == "") {//计算进度条的位置,距离底端
options.pro_left = (width / 2) - (options.pro_width / 2);
}

var _temp = '<div class="progress" style="color:blue;position:absolute;width:' + width + ';height:' + height + ';BACKGROUND:' + options.backcolor + ';TOP:0px;LEFT:0px;Z-INDEX:998;FILTER: alpha(opacity=' + Number(options.opacity) * 100 + ');OPACITY:' + options.opacity + ';DISPLAY:table-cell;VERTICAL-ALIGN:middle;TEXT-ALIGN:center"></div>';
var _temp2 = '<div class="progress-img" style="border:' + options.pro_border + '; width:' + options.pro_width + ';height:' + options.pro_height + ';position:absolute;TOP:' + options.pro_top + ';LEFT:' + options.pro_left + ';Z-INDEX:999;"><div class="div_img" style="background:url(' + options.imgpath + ') no-repeat-y;width:' + (options.pro_width - options.pro_width) + ';height:' + options.pro_height + ';"></div></div>';
var _temp3 = '<div class="progress-font" style="BACKGROUND:' + options.font_back_color + ';color:' + options.font_color + '; width:' + options.pro_width + ';height:' + options.pro_height + ';position:absolute;TOP:' + (options.pro_top + 20) + ';LEFT:' + options.pro_left + ';Z-INDEX:999;"></div>'; ;

thispro.append(_temp);
thispro.append(_temp2);
thispro.append(_temp3);

$.ajax({
//获取待处理文件总数
type: 'get',
url: options.r_count_url,
cache:
false,
beforeSend:
function(XMLHttpRequest) {
$(
'.progress-font').html('正在计算待处理数据总数,请稍后...');
},
success:
function(data) {
COUNT
= data;
$(
'.progress-font').html(options.result_text.replace('{0}', COUNT).replace(/[{]\d[}]/g, "0"));
clearTime
= setInterval(getProgress, 1000); //成功获取待处理数据总数后,开始循环调用请求获取当前已处理多少条数据,未提供参数,自行修改
},
error:
function() { },
complete:
function(XHR, TS) {

}
});

function removeAll() {
$(
'.progress').remove();
$(
'.progress-img').remove();
$(
'.progress-font').remove();
}
function getProgress() {//定时获取处理多少条数据等
if (flag) {
flag
= false;
$.ajax({
type:
'get',
url: options.r_num_url,
cache:
false,
success:
function(data) {
data
= $.parseJSON(data); //格式化json数据

if (data.msg == "success") {
flag
= true;
$(
'.div_img').width(options.pro_width / parseInt(COUNT) * parseInt(data.count)); //设置进度条的长度
$(".progress-font").html(options.result_text.replace('{0}', COUNT).replace(/[{]\d[}]/g, data.count) + '' + parseInt(data.count / parseInt(COUNT) * 100) + "%");
if (data.count == COUNT) {
$(
".progress-font").text(options.result_text.replace(/[{]\d[}]/g, data.count) + ',100%,全部处理完毕。请稍后...');
options.success(
"ok");
clearInterval(clearTime);
removeAll();
}
}
},
error:
function() {
}
});
}
}
});
};
})(jQuery);

 注意返回数据的格式,也可以直接调用

System.Web.Script.Serialization.JavaScriptSerializer

 

进行json格式的序列化,输出即可

/// <summary>
/// 获取文件解读进度
/// </summary>
private void getProgress()
{
string bz = request.QueryString["bz"];
string temp = "select * from TEMP_WJJD where username='" + Login.ReadCookie().UserID + "' and bz='" + bz + "'";
string _temp = "";
try
{
DataTable _dt
= DbHelperOra.Query(temp);

if (_dt.Rows.Count > 0)
{
_temp
= "{\"msg\":\"success\",\"count\":\"" + _dt.Rows[0]["count_file"] + "\",\"filepath\":\"" + Convert.ToString(_dt.Rows[0]["filepath"]).Replace(":", "^").Replace("\\", "\\\\") + "\"}";
}
else
{
_temp
= "{\"msg\":\"success\",\"count\":\"0\",\"filepath\":\"\"}";
}
}
catch (Exception e)
{
_temp
= "{\"msg\":\"error\",\"conunt\":\"" + e.Message + "\"}";
}
response.Write(_temp);
response.End();
}
/// <summary>
/// 获取文件总数
/// </summary>
private void getFileCount()
{
string folderid = request.QueryString["id"];
string where = request.QueryString["where"];
FileMappingService fms
= new FileMappingService("0");
response.Write(fms.getAllCountByArchiveId(folderid,
where));
response.End();
}