总结一下,最近工作中的问题

  1. bootstrap-datetimepicker.js bug
    总结一下,最近工作中的问题_第1张图片

2.点击点击

利益iframe进行框架分隔,采用点击方式会造成部分丢失,这是由于“#”具有锚点信息,因此位置发生改变

3.业务需要,需要将几个区划的信息进行对比,查询数据如下,在进行合并
总结一下,最近工作中的问题_第2张图片

行转列处理后的数据
总结一下,最近工作中的问题_第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张图片

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的!

你可能感兴趣的:(Js模块化开发案例分析,项目示例)