1. ASP.NET在按Backword或者Forward的时候,出现错误:Webpage has expired
我们可以用以下方式解决:
一种方法是在后台用下面的方法:
在Page_load函数中添加以下代码,这样当postback的时候就可以确保page每次都是从Server端获得的:
C#代码:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
另一种方法是在前台可以用下面的方式解决:
我们用JavaScript把浏览器的back按钮或者forward按钮给禁用了,下面的代码可以放在前台页面的head部分:
JavaScript代码:
<scripttype="text/javascript">
functionpreventBack(){window.history.forward();}
setTimeout("preventBack()", 0);
window.οnunlοad=function(){null};
</script>
2. 动态生成的表Table的第一行固定
2.1 问题
在表格向下滚动的时候,由于第一行因为滚动而隐藏了,所以最我们看不到表头信息,为了解决这个问题,看下面的叙述:
2.2 解决方案
在ASP.NET生成的表进行设计的时候,我们可以使用两个表来完成一个表的功能,一个表叫HeadTabel,另一个叫做RowTable;然后我们把这两个表分别放在一个DIV中,这个两个DIV,分别叫做HeadDiv和RowDiv;并且要设置这个2个Div的height和width,和Scrollbar,因为只有设置了Div的height和width后,当headTable或者RowTable的height或者width超过了Div的height或者width后,才会出现Scrollbar;
Table和Div的构造按照以下方式:
<div id ="HeaderDiv" style="width:920px;height:40px; overflow:hidden;" runat="server">
<tableid="HeaderTable" runat="server">
</table>
</div>
<div id ="RowDIV" style="width:940px;height:360px;overflow:scroll;"runat="server">
<tableid="rowTable" runat="server">
</table>
</div>
这里RowDiv的滚动条设置为overflow:scroll, 而HeadDiv的滚动条设置为overflow:hidden,这里这样设置是为了防止出现2个滚动条;
为了使得当RowDiv的滚动条横向滚动时,HeadDiv的也跟着滚动到相应的位置,我们必须给RowDiv加上滚动条相应事件,这里为了在后台动态添加Div控件的事件函数,我们让这个2个DIV的runat属性设置为server:
C#后台添加事件:
rowTableDiv.Attributes.Add("onscroll", "onScrollMove(this)");
Javascript前台代码:
functiononScrollMove(control) {
varhead_div = document.getElementById('ContentBottom_tableHeaderDiv');
if(head_div != null)
{
head_div.scrollLeft =control.scrollLeft;
}
}
当然,仅仅这样做有个缺点,当表中数据位空的时候,只有HeadTable里面的列名,当列名长度大于HeadDiv的长度的时候,HeadTable靠近右面的列名就看不到了,因为HeadDiv的滚动条是隐藏的;为了解决这个问题我们要分情况:
1) 当RowTable的行数大于等于1时,我们使得RowDiv的Scorll Bar事件控制HeadDiv的ScorllBar位置,此时RowDiv的overflow属性为scroll, 而HeadDiv的overflow属性为:hidden;
2) 当RowTable的行数为0时,我们使得HeadDiv的Scorll Bar控制其自己,把RowDiv的Scroll Bar隐藏掉,此时此时RowDiv的overflow属性为hidden, 而HeadDiv的overflow属性为:scroll;
我们这样可以在后台用代码控制其属性设置:
C#代码如下:
HeadDiv.Style.Add("overflow","scroll");
RowDiv.Style.Add("overflow", "hidden");
这里需要注意:只有当Table的height或者width大于了Div的height或width的时候,这是DIV的Scorll Bar才会出现;