小问题系列(2010-04)
我还不能算是熟手,充其量半熟而已。在做项目的过程中,经常遇到各种小问题,有时候将问题解决之后,下次遇到时又忘记了解决的方法。哎,年纪大了,记性不好了。俗话说,好记性不如烂笔头,何况我这等坏记性呢?所以,还是把每次遇到的问题和解决的方法都记录下来吧,以便日后查找,也拿出来和大家分享。:)
问题一(04.07):在js中如何判断字符串是否以“xxx”开头?C#中有StartWith()方法,js却没有。
解决:在网上找到了startWith和endWith的js方法。(原文链接)
1 <SCRIPT type="text/javascript" language="JavaScript">
2 function test(){
3 var a = "abcdef".startWith("abc");
4 alert("a : "+a);
5 var b = "abcdef".endWith("def");
6 alert("b : "+b);
7 }
8 String.prototype.endWith=function(str){
9 if(str==null||str==""||this.length==0||str.length>this.length)
10 return false;
11 if(this.substring(this.length-str.length)==str)
12 return true;
13 else
14 return false;
15 return true;
16 }
17
18 String.prototype.startWith=function(str){
19 if(str==null||str==""||this.length==0||str.length>this.length)
20 return false;
21 if(this.substr(0,str.length)==str)
22 return true;
23 else
24 return false;
25 return true;
26 }
27 </SCRIPT>
问题二(04.16) :添加、编辑数据,linq语句提交时,出现“找不到行或行已更改”的错误。
解决:同样是在网上找到了解决方法,说是因为发生了“Linq中一个常见的问题:更新冲突”。(原文链接)具体解决如下:
1.如果不是重要的数据,不需要理会并发重突,有一种简单的方法:打开dbml (linq)文件把实体类中的 属性 "Update check(更新检查)" 改为 Never(从不),当然,主键除外。
2.比较简单的方法,不使用Linq提供的SubmitChanges()方式提交更改,而直接执行SQL语句,例如:
db.ExecuteCommand("Update [dbo].[LinqTest] SET Age=25 Where ID = @p0", 1);
3.采用Linq提供的解决更新冲突的方法,在异常中捕获冲突,然后手动解决冲突:
try
{
dc.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
}
catch (System.Data.Linq.ChangeConflictException ex)
{
DC.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues); //保持当前的值
DC.ChangeConflicts.ResolveAll( RefreshMode.OverwriteCurrentValues);//保持原来的更新,放弃了当前的值.
DC.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);//保存原来的值 有冲突的话保存当前版本
db.SubmitChanges();// 注意:解决完冲突后还得 SubmitChanges() 一次,不然一样是没有更新到数据库的
}
问题三(04.28):客户要求做个网上预约服务的功能,提交表单的时候,选择“网上预约”方式还是“邮箱预约”方式,“网上预约”就提交表单到后台,“邮箱预约”就发送表单内容到客户的邮箱。以前没做过用代码来发送邮件的程序,虽然当初学的时候学习了,但这么久下来,早就忘记了。于是上园子里搜了搜,立马就搜到一个蛮好的文章,呵呵,先在这里谢谢博主(小小书童)了。(原文链接)