• Data层相关问题 & JS循环取值


    第一次写博客,里面是自己工作中碰到的问题及总结的知识点,便于自己以后回顾,技术大牛们请直接忽略这篇文章,也希望能帮助到想我这样的小白!

    Data层相关问题总结:

    1. 代码管理用的是 VSS 2005;

       改好程序后,必须要重新生成下;(注意文件之间的引用关系的顺序),程序改的是对的,也在本地保存了,断点调试的时候还是之前没有改的代码,郁闷了好久。别的引用没有更新,害惨我了。

       第一次碰到,不了解,白白浪费了两天的时间,两天的时间,还破坏了我周末的心情!

    2. SQL语句写好后,注意起中英文之间的输入:

    Data:

    1 //把字符串转化成Int类型的值; 
    2                 searchSql.AppendLine("AND (CHARINDEX(',' +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0)");
    3                 searchSql.AppendLine("or ((CHARINDEX(',' +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0) and (CHARINDEX(',' +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0))");
    4                 searchSql.AppendLine("OR ((CHARINDEX(',' +LTRIM(A.DeptWorkID),(@DeptID))>0 or CHARINDEX(RTRIM(A.DeptWorkID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0) and (DeptCompilationID is null or DeptCompilationID=0 or (CHARINDEX(',' +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0)))");//and A.DeptCompilationID is null
    5                 comm.Parameters.Add(SqlHelper.GetParameterFromString("@DeptID", searchModel.Dept));

    SQL:

    1 select distinct top 100 DeptID,* from officedba.EmployeeInfo A --where DeptID in (247,248)
    2 where
    3 (CHARINDEX(',' +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0)--A.DeptCompilationID = @DeptID)
    4 OR ((CHARINDEX(',' +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0) and (CHARINDEX(',' +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0))
    5 OR ((CHARINDEX(',' +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptWorkID),(@DeptID))>0) and (DeptCompilationID is null or DeptCompilationID=0 or (CHARINDEX(',' +LTRIM(A.DeptCompilationID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptCompilationID)+',',(@DeptID))>0 or CHARINDEX(LTRIM(A.DeptCompilationID),(@DeptID))>0))) 
    6 
    7  

    关于中英文之间的输入法的问题,可害苦我了,就查“)”是中文的还是英文的浪费了我十几分钟,既费神,又费力,关键是浪费心情;以后只要是在VS或SQL中写代码,一定要切换到英文输入法下,不许再搜狗输入法下偷懒写;

    以后一定要多注意细节,细节,细节的东西!

    3. 用户未处理SqlException,在将 nvarchar 值 '247,248' 转换成数据类型 int 时失败。

        解决问题的相关查找:http://bbs.csdn.net/topics/310077684

     (CHARINDEX(',' +LTRIM(A.DeptWorkID),(@DeptID))>0 or  CHARINDEX(RTRIM(A.DeptWorkID)+',',(@DeptID))>0)

    JS循环取值总结:

    1.

    其中有三列的值(含有Total字符串的列)是本行前面的所有和,不需要改动;

    如果需要修改的是三列中的其中一列,默认是不改变它的值的,但是没有弹出alert提示,日后研究;

    表有三行,最后一行为合计等等。。。 不需要修改;

    只需要遍历“史小沁”和“高万顺”两行就行;

    如果输入原工资为最后一行的数据,会有alert提示;

    JS:

     1 function AllUpdate() {
     2 
     3    var table = document.getElementById("tblSalaryDetail");
     4     
     5     //获取表格行数
     6     var tableCount = table.rows.length;
     7 
     8     var CountNum = 0;
     9 
    10     var NowSal = document.getElementById("JBGZ").value.Trim();
    11     var ModifedSal = document.getElementById("JiangJ").value.Trim();
    12 
    13 //    //出错字段
    14 //    var fieldText = "";
    15 //    //出错提示信息
    16 //    var msgText = "";
    17 //    //是否有错标识
    18 //    var isErrorFlag = false;
    19 
    20     if (NowSal == "" && ModifedSal == "") {
    21         alert("请在对应的位置,输入原工资和修改后的工资!");
    22 //        isErrorFlag = true;
    23 //        fieldText += "原工资和修改后的工资|";
    24 //        msgText += "请输入原工资和修改后的工资|";        
    25     }
    26     else if (NowSal == "") {
    27         alert("请输入原工资!");
    28     }
    29     else if (ModifedSal == "") {
    30         alert("请输入修改后的工资!");
    31     }
    32     else // if (ModifedSal != "" && NowSal!="") 
    33     {
    34         for (var row = 1; row < tableCount; row++)
    35         {
    36             var rowIndex = table.rows[row - 1];
    37             var textinput = rowIndex.getElementsByTagName("input");
    38 
    39             for (var i = 1; i < textinput.length; i++) 
    40             {
    41                 if (textinput[i].value == NowSal)// && (textinput.id.indexOf('TotalOne_') <= -1)   && (textinput.id.indexOf('TotalTwo_') <= -1) && (textinput.id.indexOf('Total_') <= -1))  //    var textinput = table.getElementsByTagName("input");
    42                 {
    43                     textinput[i].value = ModifedSal;
    44                     CountNum++;
    45                 }            
    46             }
    47             CalculateTotalSalary("", row);
    48         }
    49         if (CountNum == 0) 
    50         {
    51             alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。");
    52         }
    53     }
    54 }
    View Code
     1 function AllUpdate() {
     2 
     3    var table = document.getElementById("tblSalaryDetail");    //取到表中的数据
     4     //获取表格行数
     5     var tableCount = table.rows.length;
     6     var CountNum = 0;
     7     var NowSal = document.getElementById("JBGZ").value.Trim(); //显示“原工资”文本框
     8     var ModifedSal = document.getElementById("JiangJ").value.Trim();//显示“修改后工资”文本框
     9 //    var textinput = table.getElementsByTagName("input");
    10     if (ModifedSal != "") 
    11     {
    12         for (var row = 1; row < tableCount; row++) //遍历表的行
    13         {
    14             var rowIndex = table.rows[row - 1];
    15             var textinput = rowIndex.getElementsByTagName("input"); //用“input”属性取到input对应的每一个值
    16             for (var i = 1; i < textinput.length; i++) //遍历某一行的input文本框
    17             {
    18                 if (textinput[i].value == parseInt(NowSal) ) //多注意parseFloat,parseDouble等等的用法
                // && (textinput.id.indexOf('TotalOne_') <= -1) && (textinput.id.indexOf('TotalTwo_') <= -1) && (textinput.id.indexOf('Total_') <= -1)) //parseInt显示的把文本框中的内容转化为Int类型的 19 { 20 textinput[i].value = ModifedSal; //赋值 21 CountNum++; 22 } 23 } 24 CalculateTotalSalary("", row); 25 } 26 if (CountNum == 0) 27 { 28 alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。"); 29 } 30 }

      

     1 function AllUpdate() {
     2     table = document.getElementById("tblSalaryDetail");
     3 
     4 //    var SubTotal = table.getElementsByTagName("Total_");
     5     
     6     //获取表格行数
     7     var tableCount = table.rows.length;
     8 
     9     var CountNum = 0;
    10 
    11     var NowSal = document.getElementById("JBGZ").value.Trim();
    12     var ModifedSal = document.getElementById("JiangJ").value.Trim();
    13 
    14 //    var Totalone = table.rows[0].cells[9].innerHTML;
    15 //    var Totaltwo = table.rows[0].cells[16].innerHTML;
    16 //    var Totalthree = table.rows[0].cells[17].innerHTML;
    17 
    18 //    var Total = "Total";
    19 //&& (table[i].id).substring(0,5) != Total
    20 
    21     var textinput = table.getElementsByTagName("input");
    22 
    23 //    var Totalone = textinput[9].value;
    24     
    25     if (ModifedSal != "") {
    26     
    27         for (var row = 1; row < tableCount-1; row++) {
    28 
    29             for (var i = 1; i < textinput.length; i++) {
    30 
    31                 var str = textinput[i].value;
    32                 //                var one = textinput.id.indexof('TotalOne_');
    33 //                var two=("TotalOne_").indexof('TotalOne_');
    34 
    35                 if (textinput[i].value == parseInt(NowSal)) //&& (textinput.id.indexof('TotalOne_') <= -1)   && (textinput.id.indexof('TotalTwo_') <= -1) && (textinput.id.indexof('Total_') <= -1)
    36                 {
    37 
    38                     textinput[i].value = ModifedSal;
    39                     CountNum++;
    40                 }            
    41             }
    42             CalculateTotalSalary("", row);
    43         }
    44 
    45         if (CountNum == 0) {
    46 
    47             alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。");
    48         }
    49 
    50  
     1 if (ModifedSal != "") {
     2     
     3         for (var row = 1; row < tableCount-1; row++) {
     4 
     5             for (var i = 1; i < textinput.length; i++) {
     6 
     7                 var str = textinput[i].value;
     8                 if (textinput[i].value == parseInt(NowSal)) //&& (textinput.id.indexof('TotalOne_') <= -1)   && (textinput.id.indexof('TotalTwo_') <= -1) && (textinput.id.indexof('Total_') <= -1)
     9                 {
    10                     textinput[i].value = ModifedSal;
    11                     CountNum++;
    12                 }            
    13             }
    14             CalculateTotalSalary("", row);
    15         }
    16 
    17         if (CountNum == 0)
    18 
    19   {
    20 
    21             alert("没有找到与你要求相符的数据 ! \n 请您重新输入进行查找。");
    22        }
    23     }

      错误的:

      

     1   for (var row = 1; row < tableCount; row++) 
     2     {
     3         //批量更新工资
     4 
     5         row = table.rows[row];
     6 
     7 //        alert(row);
     8 
     9         for (var col = 1; col < row.cells.length; col++) {
    10 
    11 //            alert(col);
    12 //            alert(row.cells[col].innerHTML);
    13 
    14             if (row.cells[col].innerHTML == valu) {
    15 
    16                 row.cells[col].innerHTML = v1;
    17                 
    18                 CalculateTotalSalary("", row);
    19             
    20             }
    21         }
    22             
    23 
    24         if (table.rows[row].style.display != "none") 
    25         {
    26             document.getElementById(str+"_"+row).value=valu;
    27             CalculateTotalSalary("",row);
    28         }
  • 相关阅读:
    洛谷 P4160 [SCOI2009]生日快乐 题解
    洛谷 P1041 传染病控制 题解
    洛谷 P3154 [CQOI2009]循环赛 题解
    洛谷 P1144 最短路计数 题解
    洛谷 P2296 寻找道路 题解
    洛谷 P1514 引水入城 题解
    洛谷 P2661 信息传递 题解
    洛谷 P3958 奶酪 题解
    洛谷 P3501 [POI2010]ANT-Antisymmetry 题解
    【LGR-069】洛谷 2 月月赛 II & EE Round 2 Div.2 A-C题解
  • 原文地址:https://www.cnblogs.com/MarkTang/p/3962397.html
Copyright © 2020-2023  润新知