|
主题: 蓝鲸的.NET随手录
|
 蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
|
#12005/1/29 20:06:22
我这人虎头蛇尾惯了,做事开始是催着别人,到后来是别人催着自己,所以问题没有一个完整的教材什么的。如果是随手还可以,并且随手也是写好就扔,扔到自己后来也看不懂自己写了些什么 :D所以各位要翻我过去写的东西,我自己恐怕要找半天,大多找不到了。
这是每一个,因为一个订单要分两部分内容,一个是详细内容,另一个是主要内容。详细内容用几个输入框提交后,把信息暂存在一个DataTable中,并且用DataGride绑定显示。等输入完毕后,一起提交全部内容,存入数据库中。这样问题来了,输入框中的用户姓名是不能为空的,用验证控件只能用在把一条用户信息提交到临时表中是用,但输入完毕后,这个验证控件就讨厌了,因没有必要存在了。所以用js来写,在Page_Load或初始界面时写这个:
btnAddDetail.Attributes.Add("onClick", "if (Form1.txtDetailTouristName.value == ''){alert('游客姓名必须填写');return false;}") ;
这样如果没有填写姓名,程序会用对话框提示的,这种方法很实用,初学者一定要学会这一招。再写个简单的:
btnDeleteAll.Attributes.Add("onClick", "return confirm('是否删除全部信息?');") ;
非常大鱼
|
 蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
|
#22005/1/29 20:19:09
SQL存储过程可以实现按条件查询:
CREATE PROCEDURE sp_Article_GetArticles
@UserID int = NULL AS IF UserID IS NULL SELECT * FROM Article ELSE SELECT * FROM Article WHERE UserID = @UserID
GO
这样可以用.NET的Command传递不同参数,但到不同查询结果。 如果想知道.NET的调用,在论坛里查找一下吧,不要问我,我是找不到自己写过的东西的。
非常大鱼
|
 蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
|
#32005/1/29 20:34:23
有点不太喜欢ViewState,但ViewSate存储一些信息确实是好方法 我用它存储一个临时输入表
ViewState["Details"] = tblDetail;
而调用时用: DataTable tblDetail = (DataTable)ViewState["Details"];
不过有时喜欢用static定义,图方便,但可能不是最好。
非常大鱼
|
 蓝鲸
职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
|
#42005/1/30 23:29:51
近来做个订票系统,开始觉得这个系统挺容易。但做着就发觉这系统要编好确有难度。
难度一:订票系统分主信息和详细信息,一个订单中有很多游客信息,分成两表。为了防止订单中途出错,用了事务处理。这个稍好做些,只要出错了,回滚事务就行了,不会有坏记录出现。
难度二:也是最头疼的,因一个行程只能有一定名额。旅行社机构非常多,一个地方可能有一二百家,所以同时操作同一行程订购的可能性很大。我做的系统是一张订单全部输入完毕后,一起提交的。所以在十分钟或更多的输入时间中,可能其它机构已订购出名额,所以在提交时需要验证是否名额已超过了。更头疼的是,可能两家单位会同时提交,这样可以会在验证时出现一些不实的数据。想了很多法,在提交事务过程中锁住数据库或表,但这方面经验不足,怕出意外,所以我在事务的起始和末尾进行了两次验证,是否名额已满,如果一次超额则滚回事务,取消提交。
非常大鱼
|