1.手动HTML构建table其中有分级列
分级列类似于一棵树,lookhere13,但是那里用到了TreeView所以会自动分等级,这里是表格需要计算该列每行位于第几等级然后自己在前面添加不同个数的 ;实现不同分级,也是在数据库里要有父节点ID的字段,这里是rwfid(任务父节点id)
<div id="taskFPBB" style="overflow:auto; width:1800px;display:none; margin-top:10px;"> <div id="taskFPBBTable" runat="server"></div> </div>
方法 GetRWByRWid 根据任务ID得到某条任务 GetRWByRWFid 根据任务父节点ID得到某些任务
TaskManagementDAL tmd = new TaskManagementDAL(); protected string strrwmctd = null; //任务分配情况报表任务名称td protected string strothertd = null; //任务分配情况报表其他td protected DataTable dt = new DataTable(); protected string strnbsp = null; //前面需加几个 protected int nbspcount = 1; //rw位于第几级 protected void Page_Load(object sender, EventArgs e) { RWFPQKBB(); } //任务分配情况报表 private void RWFPQKBB() { DateTime maxdate = tmd.GetMaxDateByXmid("090837043_115716625"); DateTime mindate = tmd.GetMinDateByXmid("090837043_115716625"); float theDays = float.Parse(new TimeSpan(maxdate.Ticks - mindate.Ticks).Days.ToString()); float countTd = theDays / 7; string[] strs = countTd.ToString().Split('.'); bool is7BS = strs[1] == "0"; //是否正好是7的倍数 int count = int.Parse(strs[0]); //上面整个是求某项目所有任务的最早开始时间和最晚结束时间,然后算出有多少个星期,横向列出来(见下图) string strTable = "<table cellpadding='5px;' rules='all'><tr><th> </th><th>" + mindate.ToString("yyyy-MM-dd") + "</th>"; string strTd = "<tr><td>天博项目管理系统" + "地产大楼监控系统" + "进度计划</td><td> </td>"; strothertd = "<td> </td>"; for (int i = 0; i < count; i++) { double add7GS = i + 1; strTable += "<th>" + mindate.AddDays(7.0 * add7GS).ToString("yyyy-MM-dd") + "</th>"; strTd += "<td> </td>"; strothertd += "<td> </td>"; } if (!is7BS) { strTable += "<th>" + maxdate.ToString("yyyy-MM-dd") + "</th>"; strTd += "<td> </td>"; strothertd += "<td> </td>"; } taskFPBBTable.InnerHtml = strTable + strTd; dt = tmd.GetRWByRWFid("0", "090837043_115716625"); GetStrTable(dt, "090837043_115716625"); } //递归读出该项目下的所有任务 protected void GetStrTable(DataTable dt, string xmid) { if (dt.Rows.Count != 0) { foreach (DataRow item in dt.Rows) { //判断当前rw位于第几级 WhatRank(tmd.GetRWByRWid(item["rwid"].ToString(), xmid), xmid); strnbsp = GetNbsp(nbspcount); nbspcount = 1; taskFPBBTable.InnerHtml += "<tr><td>" + strnbsp + item["rwmc"].ToString() + "</td>" + strothertd; strnbsp = null; GetStrTable(tmd.GetRWByRWFid(item["rwid"].ToString(), xmid), xmid); } } } //构建 protected string GetNbsp(int count) { for (int i = 0; i < count; i++) { strnbsp += " "; } return strnbsp; } //利用递归判断当前位于第几级别 protected void WhatRank(DataTable dt, string xmid) { if (dt.Rows[0]["rwfid"].ToString() == "0") { return; } else { nbspcount++; WhatRank(tmd.GetRWByRWid(dt.Rows[0]["rwfid"].ToString(), xmid), xmid); } }
2.javascript数组操作
js操作数组 http://www.cnblogs.com/qiantuwuliang/archive/2011/01/08/1930499.html
js清空数组 http://blog.csdn.net/jazywoo123/article/details/7056064
数组的join函数,将一个数组内的元素返回成一个字符串,每个元素之间用指定分隔符分开(分隔符也在字符串内),该函数正好与split函数相反
http://topic.csdn.net/u/20120222/16/63443040-2567-4af6-97a5-39f447b246fd.html
3.js中setInterval与setTimeout
http://blog.163.com/dawnsword@126/blog/static/162805915201032304521547/
停止setInterval与setTimeout
sIt=setInterval("func()",1000); clearInterval(sIt);
sTo=setTimeout("func",1000); clearTimeout(sTo);
http://topic.csdn.net/u/20120215/11/bef3bbb2-271a-40b8-9b97-c8c251e1a9db.html
4.代码发送邮件
按照以下链接的方法发送内嵌图片邮件失败
http://www.cnblogs.com/SkyD/archive/2009/05/11/1453868.html
出现 e = {"事务失败。 服务器响应为: DT:SPM smtp3, .....的错误
按照以下链接的查到DT:SPM发送的邮件内容包含了未被网易许可的信息,或违背了网易的反垃圾服务条款。
http://hi.baidu.com/fannyfairy/blog/item/660c1ff36086101fb07ec591.html
经调试,发现网易不允许正文以HTML格式发送,即代码中不能设置m.IsBodyHtml = true;
所以不能按照这种方法发送内嵌图片邮件
5.jQuery调用WebService的方法
注意事项以下链接已经说的比较明白了,但要注意josn格式的字符串值要加单引号
http://hi.baidu.com/pan524365501/blog/item/d3a4358ad1ffc6659e2fb48f.html
6.设置背景颜色透明度
http://www.cnblogs.com/xionglee/articles/1203788.html
style="opacity:0.3; filter:alpha(opacity=30);" 值别倒了
7.EasyUI拖拽的bug
EasyUI里的拖拽函数有个bug,就是当拖动的目标元素内有交互元素时,如<input type='text'>等时,我们无法正常输入或进行其他操作(当然我们也为了是可以拖动目标元素的边框,否则我们可以为函数传入{handle:}参数,只指定拖动把手),我们可以将这些交互元素放到一个iframe里,这样就可以解决这个问题了。
8.window.showModalDialog()和$("#btn1").click()虚拟点击
http://www.cnblogs.com/zhangyi85/archive/2009/09/03/1559594.html
可以通过window.returnValue向打开对话框的窗口返回信息
parent.htm
<script>
str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
if(str=="http://www.51js.com"){$("#btn1").click();window.location.href=str;}
</script>
modal.htm
<script>
window.returnValue="http://www.51js.com";
</script>
parent.htm页面str得到的值就是http://www.51js.com
其中$("#btn1").click();会执行虚拟点击,而不管btn1是
<asp:Button ID="btn1" runat="server" OnClick="btn1_Click" />
还是
<input type="button" id="btn1" runat="server" onserverclick="btn1_ServerClick"/>
所以当不喜欢.net控件的样式时,可自己用div画,但后当点div时,用js虚拟点击btn1,当然这时你还可能需要隐藏btn1,设置visiable="false"不会执行btn1_Click,而需要设置其display:none
9.C#空值判断
可以先将其转换成string类型,然后利用string.IsNullOrEmpty(object.ToString())来判断其是否为空或为null
http://www.cnblogs.com/GIS_zhou/articles/1556216.html
10.静态字段初始化
private static string s="我是静态字段";
静态字段会在静态构造函数里初始化,而静态构造函数执行且只执行一次(在该类第一次实例化时),类型默认没有定义静态构造函数,看这里的类型构造器(静态构造器),如果类型里定义了静态字段,编译器就会添加一个静态构造函数到类型里。
11.jquery判断元素是否存在的方法
if ( $("#someID").length > 0 ) {
$("#someID").text("hi");
}
以下12和13都跟这个HTML代码有关
<asp:GridView ID="grwXX" runat="server" AutoGenerateColumns="false" RowStyle-Wrap="false" OnRowDataBound="grwXX_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="cbdel" runat="server" CssClass="cbItemsss" /> </ItemTemplate> <HeaderTemplate> <asp:CheckBox ID="cbAll" CssClass="cbItemAll" OnClick="selAll('grwXX',this.checked);" runat="server" Text="" /> </HeaderTemplate> </asp:TemplateField> <asp:BoundField DataField="wzdm" HeaderText="设备代码" /> <asp:BoundField DataField="wzmc" HeaderText="设备名称" /> <asp:BoundField DataField="sbxh" HeaderText="设备型号" /> <asp:BoundField DataField="sblms" HeaderText="设备类名称" /> <asp:BoundField DataField="sbldm" HeaderText="设备类代码" /> <asp:BoundField DataField="sbzlms" HeaderText="设备子类名称" /> <asp:BoundField DataField="sbzldm" HeaderText="设备子类代码" /> <asp:BoundField DataField="zzsmc" HeaderText="制造商名称" /> <asp:BoundField DataField="zzsdm" HeaderText="制造商代码" /> <asp:BoundField DataField="azrq" HeaderText="安装日期" HtmlEncode="false" DataFormatString="{0:d}" /> <asp:BoundField DataField="tyrq" HeaderText="投运日期" HtmlEncode="false" DataFormatString="{0:d}" /> </Columns> </asp:GridView>
12.全选全不选
function selAll(id,idVal) { if (idVal == true) { $("#" + id + " tr input[type='checkbox']").each(function() { $(this).attr("checked", true) }); } else { $("#" + id + " tr input[type='checkbox']").each(function() { $(this).removeAttr("checked"); }); } }
13.gridview翻页不影响里面的CheckBox的状态
<input type="hidden" id="hid_sbid" runat="server" />
$(function() { //GridView翻页时保持选中的CheckBox的状态1,2 //1.点全选/全不选下面的复选框时的设置 $(".cbItemsss").click(function(){ var sbid=$("#hid_sbid").val(); if($(this).children().attr("checked")=="checked" || $(this).children().attr("checked")==true) { sbid+=$(this).parent().next().text()+","; $("#hid_sbid").val(sbid); }else{ var delsbid=$(this).parent().next().text()+","; sbid=sbid.replace(delsbid,""); $("#hid_sbid").val(sbid); } }) //2.点全选/全不选复选框时的设置 $(".cbItemAll").click(function(){ var sbid=$("#hid_sbid").val(); $(".cbItemsss").each(function() { if($(this).children().attr("checked")=="checked" || $(this).children().attr("checked")==true) { sbid+=$(this).parent().next().text()+","; $("#hid_sbid").val(sbid); }else{ var delsbid=$(this).parent().next().text()+","; sbid=sbid.replace(delsbid,""); $("#hid_sbid").val(sbid); } }); }) })
protected void grwXX_RowDataBound(object sender, GridViewRowEventArgs e) { string[] sbids=hid_sbid.Value.Split(','); if (e.Row.RowType==DataControlRowType.DataRow) { for (int i = 0; i < sbids.Length; i++) { if( e.Row.Cells[1].Text==sbids[i]){ ((CheckBox)e.Row.FindControl("cbdel")).Checked = true; } } } }
14. Cmd.ExecuteNonQuery()不执行不报错程序直接跳出
出现这种现象一般是你的SQL语句是不对的,还很有可能的就是你在插入时没有给表的主键赋值