一、session
用一般处理程序操作session时老是忘记实现接口,真受不了:
添加引用 System.Web.SessionState 命名空间
实现IRequiresSessionState接口
二,
asp.net中“字符文本中字符太多”错误及解决办法
比如说这个:
<%# WebUI.Common.PublicFun.GetAlarmSubTypeNameByAlarmID(Eval("AlarmID"))%><%#Eval("AlarmID")%>
当你嵌套太多的时候他会报“字符文本中字符太多”的错误
解决办法是用"代替引号 =>> objectid="<%# Eval("ObjectId") %>"
三,
linq模糊查询
var querys=from u in f.Users where u.id.Contains(id) && u.name.Contains(name) select u; var q = from c in baseDic where c.ItemText.Contains(typeText) select c.ItemId;
很全的linq语法及实例
http://wenku.baidu.com/view/4c85bf02a6c30c2259019e9e.html
四,
.net 日期类型的变量,要取它的星期(取出来默认是英文的),需要这样子,比如说:item.DutyTime这个DateTime类型变量
string week= System.Globalization.CultureInfo.GetCultureInfo("zh-CN").DateTimeFormat.GetDayName(Convert.ToDateTime(item.DutyTime).DayOfWeek)
这样转出来的就是中文形式的星期几了
五,
开发的时候,经常需要对文本框的输入字数进行限制,否则的话,会经常报错,普通的文本框可以用maxLength属性进行限制,
富文本框就不可以了,不生效的,这里可以这么做
<asp:TextBox ID="txtRemark" runat="server" CssClass="input" Width="100%" TextMode="MultiLine" Rows="6" /> <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ErrorMessage="备注长度不能大于100字" Text="备注长度不能大于100字" ControlToValidate="txtRemark" Display="dynamic" ValidationExpression="^[\s\S]{0,100}$"></asp:RegularExpressionValidator>
ValidationExpression的100就对应了文本框的限制字数
六,
//布尔型转成字符串型,首字母会变大写,不降序则不能赋值成功 ddlCanModity.SelectedValue = obj.CanModity.ToString().ToLower();
七,
在服务器端用response.write输出js代码,后用response.redirect
Response.Write("<script type='text/javascript'>alert('保存成功!');</script>"); Response.Redirect("AcceptOfficeDocumentsList.aspx");
这是注定要悲剧的!因为他会先运行完服务器端的代码,然后再去运行客户端,当遇到Response.Redirect("AcceptOfficeDocumentsList.aspx");
它直接就给你重定向到新的页面去了,客户端事件alert('保存成功!');永远不会被执行。
正确的做法应该是
Response.Write("<script type='text/javascript'>alert('保存成功!');</script>"); Response.Write("<script type='text/javascript'>self.location.href='AcceptOfficeDocumentsList.aspx';</script>");
这样它就会一起在客户端执行这代码了
八,框架集刷新
使用框架集时,实现对数据进行删除,修改后,对应的页面进行刷新,这里有个例子:
当我对DocumentTypeList页面的数据进行删除时,我希望DocumentTypeTree也能实时进行更新
<frameset border="0" framespacing="0" cols="180,*" frameborder="NO" rows="*"> <frame src="DocumentTypeTree.aspx?menu_id=<%=Menu_id %>" name="DocumentTypeTreeFrame" frameborder="0" noresize="noresize" id="DocumentTypeTreeFrame"/> <frame src="DocumentTypeList.aspx?menu_id=<%=Menu_id %>" name="DocumentTypeListFrame"/> </frameset>
要实现这个效果,其实很简单
当DocumentTypeList.aspx进行删除后,调用js在客户端对左边的DocumentTypeTree.aspx进行刷新即可,这是在编辑页面写的代码
MessageBox.ShowAndParentRedirect(this.Page, "保存成功!", Url); string menu_id = Request.QueryString["menu_id"]; //这里的parent即是frameset框架集,DocumentTypeTreeFrame对应子框架的name Response.Write(string.Format(@"<script>parent.DocumentTypeTreeFrame.location.href= 'DocumentTypeTree.aspx?menu_id={0}'</script>", menu_id));
这样就可以进行刷新了,妥妥的!
九,页面缓存问题
利用window.print()打印页面的时候,被打印的页面很容易会被缓存(当请求的url不变时,请求的页面就是被缓存下来的页面),
解决办法:请求此页面的时候给他加个时间参数(比如这样:"&time="+new Date()),这样就可以请求页面时强制发起新的http请求
十,自定义Datatable
// 自定义DataTable private DataTable MakeFileCheckListTable() { // Create a new DataTable titled 'Names.' DataTable FileCheckListTable = new DataTable("FileCheckList"); DataColumn FileNoColumn = new DataColumn(); FileNoColumn.DataType = System.Type.GetType("System.String"); FileNoColumn.ColumnName = "FileNo"; FileCheckListTable.Columns.Add(FileNoColumn); return FileCheckListTable; }