利益iframe进行框架分隔,采用点击方式会造成部分丢失,这是由于“#”具有锚点信息,因此位置发生改变
3.业务需要,需要将几个区划的信息进行对比,查询数据如下,在进行合并
采用js进行合并,网上找到的方法
/*
* 使用mergetTable可以方便地将表格进行合并。
* 参数说明:rowsToMerger 跨行合并列 cols:需要合并的列索引,从0开始,rows:[起始行-结束行],val:填充值
colsToMerger 同行合并列 rows:需要合并的行索引,从0开始,cols:[起始列-结束列],val:填充值
*/
(function($){
$.fn.mergeTable = function(options){
var defaults = {
rowsToMerger:[{cols:0,rows:[1,2],val:"rowsToMerger"}],
colsToMerger:[{rows:0,cols:[1,2],val:"colsToMerger"}]
}
var options = $.extend(defaults, options);
return this.each(function(){
//1.首先读取整个表格的内容..
var gcolsNum=$(this).find("tr").eq(0).find("td").size();
var growsNum=$(this).find("tr").size();
//2.跨行合并列
var rowsToMerger= options.rowsToMerger;
//3.同行合并列
var colsToMerger= options.colsToMerger;
for(var j=0;jlength;j++)
{
setRowspan($(this),rowsToMerger[j].cols,rowsToMerger[j].rows,rowsToMerger[j].val);
}
for(var j=0;jlength;j++)
{
setColspan($(this),colsToMerger[j].cols,colsToMerger[j].rows,colsToMerger[j].val)
}
//同行合并列
function setColspan(obj,cols,rows,val)
{
var colstar=cols[0];
var colsend=cols[1];
var objtr=$(obj).find("tr").eq(rows);
var curColsNum=objtr.find("td").size();
var objtd;
//如果没有合并过列
if (gcolsNum==curColsNum){
objtd = objtr.find("td").eq(colstar).attr("colspan", colsend - colstar + 1).attr("class", "form_table_title");
//SET VALUE
if(val!="") {
objtr.find("td").eq(colstar).html(val);
}
}else {
//合并过列以后,列需要重新计算
var colsdif=gcolsNum-curColsNum;
objtd = objtr.find("td").eq(colstar - colsdif).attr("colspan", colsend - colstar + 1).attr("class", "form_table_title");
//SET VALUE
objtr.find("td").eq(colstar-colsdif).html(val);
}
//移除合并以前的列
for(var i=colstar+1;i1;i++ )
{
var colsDif= colsend - colstar;
if(gcolsNum==curColsNum){
objtr.find("td").eq(colstar+1).remove();
}else {
objtd.next().remove();
}
}
}
//跨行合并列
function setRowspan(obj,cols,rows,val)
{
//SET VARIABLE
var rowstar=rows[0];
var rowsend=rows[1];
var objtr=$(obj).find("tr");
var rowStarColsNum=parseInt(objtr.eq(rowstar).find("td").size());
//SET ROWSPAN
if(rowStarColsNum==parseInt(gcolsNum)) {
objtr.eq(rowstar).find("td").eq(cols).attr("rowspan", rowsend - rowstar + 1).attr("class", "form_table_title");
//SET VALUE
if(val!="") {
objtr.eq(rowstar).find("td").eq(cols).html(val);
}
} else{
//相差的列数
var colsDif= gcolsNum - rowStarColsNum;
objtr.eq(rowstar).find("td").eq(cols - colsDif).attr("rowspan", rowsend - rowstar + 1).attr("class", "form_table_title");
if(val!="") {
objtr.eq(rowstar).find("td").eq(cols-colsDif).html(val);
}
}
//RMOVE TD
for (var i=rowstar+1;i1;i++){
var curCols=parseInt(objtr.eq(i).find("td").size());
if (curCols==parseInt(gcolsNum))
{
objtr.eq(i).find("td").eq(cols).remove();
}else{
//相差的列数
var colsDif= gcolsNum - curCols;
objtr.eq(i).find("td").eq(cols-colsDif ).remove();
}
}
}
});
};
})(jQuery);
效果如下
4、系统都有一个基类,用于做一下Session丢失的处理,代码如下:
///
/// 判断是否登录,用户没有登录,则转到登陆页面,登陆成功后返回到preUrl
///
protected bool IsLogin()
{
//判断 未登录 或者 当前用户未分配登录任何系统权限
if (userState == null)
{
string logaspx = GYLYEQ.FunctionMethod.AppPath.GetBaseUrl(HttpContext.Current) + "Login.aspx";
System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "", "");
return false;
}
else if (string.IsNullOrEmpty(userState.M_User.SYSTEMIDS))
{
string logaspx = GYLYEQ.FunctionMethod.AppPath.GetBaseUrl(HttpContext.Current) + "Login.aspx";
System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "", "");
return false;
}
return true;
}
(1)RegisterClientScriptBlock 将脚本代码写在 之后,而 RegisterStartupScript 将代码写在 (注意是结束标签)之前。
(2)页面中不存在标签,是不能注册成功的.代码是执行了在html源文件中找不到js脚本,我们就注意之前所提到的.这两个方法是依赖于form的!