1. 打开新的窗口并传送参数:
w^"IR yAiO._U 传送参数:
uOO\!Hqq response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")
Mbp7%^E"A N[rAb*iT 接收参数:
Y}]-o9Rl string a = Request.QueryString("id");
]h?q1
string b = Request.QueryString("id1");
eIJ>bM Bd]k]v+ 2.为按钮添加对话框
/%mT2 Button1.Attributes.Add("onclick","return confirm(’确认?’)");
;1HzY\d%< button.attributes.add("onclick","if(confirm(’are you sure...?’)){return true;}else{return false;}")
/9e?uC6 n$F~ 3.删除表格选定记录
Fw S>V2R int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
uGv|!UQw string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString()
{Q}F.0Q L>h|1ZK 4.删除表格记录警告
yQ)&u+r private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e)
A;<wv>T {
gYCr,-_i switch(e.Item.ItemType)
?<`oKBn {
:h(`eC case ListItemType.Item :
" Lh&s<[ case ListItemType.AlternatingItem :
Cz)&R^ case ListItemType.EditItem:
s+?2oPa TableCell myTableCell;
6w=`0r3hy myTableCell = e.Item.Cells[14];
ny
cn LinkButton myDeleteButton ;
XEnu0gr myDeleteButton = (LinkButton)myTableCell.Controls[0];
W=#AfPi$& myDeleteButton.Attributes.Add("onclick","return confirm(’您是否确定要删除这条信息’);");
}v's>Ae~p break;
PY;tu#W!% default:
Khb Ku0Z break;
9Ta0Li }
dU#-;/}o n)~*BpL3 }
q)mG6Su
d `BQv;NtP 5.点击表格行链接另一页
Z\$M)e8n private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
u&w})`+u5 {
"M, 1ElQ //点击表格打开
pI:,Lt1B if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
.faf!3d e.Item.Attributes.Add("onclick","window.open(’Default.aspx?id=" + e.Item.Cells[0].Text + "’);");
Y
hQ)M5 }
N+ak{3 8qqN0"{, 双击表格连接到另一页
X Z . T%g _6Y+E"@zs 在itemDataBind事件中
lXg5UrW if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
P}]o$nWT {
xbBqR_H_ string OrderItemID =e.item.cells[1].Text;
cGiL9|k ...
5f{P% x( e.item.Attributes.Add("ondblclick", "location.href=’../ShippedGrid.aspx?id=" + OrderItemID + "’");
:\vs kk), }
sO`
oapy n>?D-)g 双击表格打开新一页
2j:0!% if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
1X[^^p~^ {
Kxch.$hc, string OrderItemID =e.item.cells[1].Text;
V"Z8-u ...
g@37t @I e.item.Attributes.Add("ondblclick", "open(’../ShippedGrid.aspx?id=" + OrderItemID + "’)");
<|3%}? }
P`ou:M{8 s-_D,$ | ★特别注意:【?id=】 处不能为 【?id =】
=#/Kg_RKL 6.表格超连接列传递参数
V
^+p:nP <asp:HyperLinkColumn Target="_blank" headertext="ID号" DataTextField="id" NavigateUrl="aaa.aspx?id=’
J*[@M*R;& <%# DataBinder.Eval(Container.DataItem, "数据字段1")%>’ & name=’<%# DataBinder.Eval(Container.DataItem, "数据字段2")%>’ />
4Wp5[(bg r=&,2meo 7.表格点击改变颜色
qXg&E}]:= if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
'w27Lt'V {
ni&|;"Nt- e.Item.Attributes.Add("onclick","this.style.backgroundColor=’#99cc00’;
#]x3(}3W this.style.color=’buttontext’;this.style.cursor=’default’;");
HeO:=OE~> }
kDE-GX"Y kzjuW 写在DataGrid的_ItemDataBound里
ujRXAN@mC if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
+4.s4&f) {
:{#O e.Item.Attributes.Add("onmouseover","this.style.backgroundColor=’#99cc00’;
odSPl{. >d this.style.color=’buttontext’;this.style.cursor=’default’;");
G0{Z@CvO' e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=’’;this.style.color=’’;");
>UMxlvTg& }
4SZ,X^]I> B
ytx.[zbX {Q3OT 8.关于日期格式
8 ECX[fw X3\PVsH$K 日期格式设定
6,A|9UX=` DataFormatString="{0:yyyy-MM-dd}"
d?8OY *m}8L%<HT 我觉得应该在itembound事件中
W|7|XO e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd"))
\c
-m\| HiA E9 9.获取错误信息并到指定页面
`^Vd* oGRk/@ 不要使用Response.Redirect,而应该使用Server.Transfer
%+H _V1F 3l~+VBR_ e.g
l cie6'< // in global.asax
`UTPX'Vz protected void Application_Error(Object sender, EventArgs e) {
d/bimQ if (Server.GetLastError() is HttpUnhandledException)
4LKpEl.= Server.Transfer("MyErrorPage.aspx");
x-m*p^} T@tsM|pI //其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :)
(T_-`N| }
~= *o 3uocAmY Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理
z.Ic?Wz7 lN#j%0MaUo 10.清空Cookie
1EXT^2!D Cookie.Expires=[DateTime];
F(yR\)!C Response.Cookies("UserName").Expires = 0
68XJ`/d c|k_[8L 11.自定义异常处理
Cgx:6TRS //自定义异常处理类
k1<^Ept using System;
nwU],{(Hgr using System.Diagnostics;
|Dn Zk3M, [ ,;e,ld namespace MyAppException
]~aj {
1ysfpX{= /// <summary>
5c` ;~ /// 从系统异常类ApplicationException继承的应用程序异常处理类。
AH#mL /// 自动将异常内容记录到Windows NT/2000的应用程序日志
%):_ /// </summary>
$6a9<&LP_ public class AppException:System.ApplicationException
Gr\ ]6 {
A?H#bRAs public AppException()
1zPS#K/3 {
8>9Mh!t}(I if (ApplicationConfiguration.EventLogEnabled)LogEvent("出现一个未知错误。");
Z)s
!p }
hzsQK_;S 2iG+Ek-?" public AppException(string message)
)X0=z1$ {
uu.X>agg LogEvent(message);
'4 *0Pw }
<= o<lRU ,c&u\W=p public AppException(string message,Exception innerException)
SBreA-2 {
FJc8g6M LogEvent(message);
x/DV> Nfn if (innerException != null)
8ttJ\m {
]q1w@)]n} LogEvent(innerException.Message);
9\4x<* }
AioW*`[WjA }
Rn~'S2`u YVMvT>/, //日志记录类
5@2Rl>B$ using System;
W3,r@mi^s7 using System.Configuration;
Ddr.6`VJ using System.Diagnostics;
gAD f9x"b using System.IO;
::>|[ND using System.Text;
X5iD<Lh using System.Threading;
~JT`q:l-q ] 0X|_bU namespace MyEventLog
wH ,PA: {
Pvc)-A /// <summary>
C}h(WOcr`X /// 事件日志记录类,提供事件日志记录支持
`
IVQ /// <remarks>
z}[u~P, /// 定义了4个日志记录方法 (error, warning, info, trace)
< o?ua} /// </remarks>
juR>4SH /// </summary>
@D;K&:~|N public class ApplicationLog
:qdyCsn2 {
VW*%q0i- /// <summary>
U4"^NLAq /// 将错误信息记录到Win2000/NT事件日志中
v#?DWeaFS_ /// <param name="message">需要记录的文本信息</param>
p& _Z}Wv /// </summary>
Ak?9a_f public static void WriteError(String message)
PEI$1,z {
PaaMh[OmG WriteLog(TraceLevel.Error, message);
B~I ]3f }
E{T3Xwg }ppApJT /// <summary>
ec!e /// 将警告信息记录到Win2000/NT事件日志中
PB^rniYh /// <param name="message">需要记录的文本信息</param>
w5i*pOG)Z /// </summary>
X"TL'"?fo public static void WriteWarning(String message)
jwk+&S {
MGF!ZZ\ WriteLog(TraceLevel.Warning, message);
JP Dxzp }
a?y ucA x<l 5wh /// <summary>
WfO E I1 /// 将提示信息记录到Win2000/NT事件日志中
`:iMGqZN /// <param name="message">需要记录的文本信息</param>
(csk
/// </summary>
U<=TAWZ@ public static void WriteInfo(String message)
/(~
HHN nh {
Nf4@m|# WriteLog(TraceLevel.Info, message);
Vx!ZF+ }
< dE7+w /// <summary>
ck;:84 /// 将跟踪信息记录到Win2000/NT事件日志中
(Iv@SiZf( /// <param name="message">需要记录的文本信息</param>
t%mi#Gh( /// </summary>
MEI&]qI public static void WriteTrace(String message)
wf ]Wm {
r.?dT |A WriteLog(TraceLevel.Verbose, message);
aUMiRm- }
cUug}/!I 1Lf - /// <summary>
y;ey( /// 格式化记录到事件日志的文本信息格式
.Yk}iHcW. /// <param name="ex">需要格式化的异常对象</param>
4M"'B A< /// <param name="catchInfo">异常信息标题字符串.</param>
!S<p"
/// <retvalue>
SVa^:\"$[ /// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para>
46f-po_ /// </retvalue>
mCnl@ /// </summary>
.B^tEBGVD public static String FormatException(Exception ex, String catchInfo)
Z%?>H iy'o {
^X#)'\T StringBuilder strBuilder = new StringBuilder();
:30daKo if (catchInfo != String.Empty)
e[fld,s {
-d?<t}a strBuilder.Append(catchInfo).Append("\r\n");
`&=%p| }
Wgf
f+7k strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace);
t]sk[ return strBuilder.ToString();
}D1?Z7p }
# 9bw'm CM~x1f *v /// <summary>
f:8!@,I /// 实际事件日志写入方法
=&g:dX|q8 /// <param name="level">要记录信息的级别(error,warning,info,trace).</param>
@[D5{v)S /// <param name="messageText">要记录的文本.</param>
\&d1bq /// </summary>
+sx(q@ private static void WriteLog(TraceLevel level, String messageText)
&(<Gr0 {
)E",)}Nh try
xRZ K&vkKE {
"X<V>q$0~c EventLogEntryType LogEntryType;
`$"{- switch (level)
Vb\^xdL> {
#pWy%U case TraceLevel.Error:
r6D3u(kMb LogEntryType = EventLogEntryType.Error;
#}1yBxB<= break;
:tENn
r.9v case TraceLevel.Warning:
([m4dr LogEntryType = EventLogEntryType.Warning;
<OiH%:G/1 break;
#+i5'p(4 case TraceLevel.Info:
MNh:NFCRA LogEntryType = EventLogEntryType.Information;
{%2p(5FB break;
rhF2U case TraceLevel.Verbose:
Ozqh Jb LogEntryType = EventLogEntryType.SuccessAudit;
{dh@|BzsbH break;
z>W?\[E<2 default:
/?>W\bP< LogEntryType = EventLogEntryType.SuccessAudit;
f3;[ZS break;
-Nr*na^H9# }
<}^p5| )1R[~]y EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
D!,'}G# //写入事件日志
P/S ,dhs( eventLog.WriteEntry(messageText, LogEntryType);
Nt
tu)wr v%#@.D!) }
)"Ujx`]4r catch {} //忽略任何异常
ndyIsR }
./tZ*sP: } //class ApplicationLog
9AWP`~l` }
ga'G)d3oS _or_Vw! 12.Panel 横向滚动,纵向自动扩展
g6gwNC:aF <asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
{#t7lV'4 t.!?"kP"c 13.回车转换成Tab
R<3 -!p1v <script language="javascript" for="document" event="onkeydown">
t%y
i3 if(event.keyCode==13 && event.srcElement.type!=’button’ && event.srcElement.type!=’submit’ && event.srcElement.type!=’reset’ && event.srcElement.type!=’’&& event.srcElement.type!=’textarea’);
7#HSe#0J event.keyCode=9;
Ut%{pc 7^F </script>
^Ux.s Q "6~+-_: onkeydown="if(event.keyCode==13) event.keyCode=9"
(\'lV8}U E.B6u, Te 14.DataGrid超级连接列
(Ms0pm-#t DataNavigateUrlField="字段名" DataNavigateUrlFormatString="
http://xx/inc/delete.aspx?ID={0}"
75h]#k9\
?nJv f 15.DataGrid行随鼠标变色
M )v='O<H8 private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
Z@ec}`UO|u {
fHuWBC_YO if (e.Item.ItemType!=ListItemType.Header)
un`4q-S7 {
X~*/ ~f e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");
\^cXmyQ <% e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#EFF3F7"+"\"");
!(S.7#-r }
oh:.iL}j }
?:5/4YC tHvP0RxM 16.模板列
)*}?EI4. <ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID">
| @B|o- <ITEMTEMPLATE>
V2yX;u <ASP:LABEL text=’<%# DataBinder.Eval(Container.DataItem, "ArticleID")%>’ runat="server" width="80%" id="lblColumn" />
/+<G@+( </ITEMTEMPLATE>
6 G,cc </ASP:TEMPLATECOLUMN>
p`"Ic2xPJ on7?V< <ASP:TEMPLATECOLUMN headertext="选中">
l>oJ^J <HEADERSTYLE wrap="False" horizontalalign="Center"></HEADERSTYLE>
ErQGVE;zk <ITEMTEMPLATE>
u7&5t <ASP:CHECKBOX id="chkExport" runat="server" />
g/!tp;e </ITEMTEMPLATE>
)|]*"yf:E <EDITITEMTEMPLATE>
iII%!f?{[ <ASP:CHECKBOX id="chkExportON" runat="server" enabled="true" />
%xXb5aY </EDITITEMTEMPLATE>
*aYuuRx </ASP:TEMPLATECOLUMN>
6ZXRb #/t+h#jG 后台代码
h5n@SE>G protected void CheckAll_CheckedChanged(object sender, System.EventArgs e)
8NWuhRRrw {
,{'ZP_ //改变列的选定,实现全选或全不选。
hBDmC_\~ CheckBox chkExport ;
d|sf2 if( CheckAll.Checked)
\Jwc[R&x {
02[*b foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
TD/ 4lL~(x {
[.;I} chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
#8WHIDS> chkExport.Checked = true;
2p *!up( }
ACEVd! q }
b6""q9S! else
KO))2GET {
R,l*@3Q foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
#=ko4?Wr( {
}'p*C$ chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
MMQ\V(C chkExport.Checked = false;
GCrsf }
E,/nK }
,y)V5
c1 }
#Fh:z4 \O*W/9
+ 17.数字格式化
[1e/@eC5 aC3Qmo6?m 【<%#Container.DataItem("price")%>的结果是500.0000,怎样格式化为500.00?】
u} [.*e <%#Container.DataItem("price","{0:¥#,##0.00}")%>
>=Na, D \5#eBJ int i=123456;
Q*9Y.W. 8 string s=i.ToString("###,###.00");
dFk$rr>q #_'^oGz` 18.日期格式化
h\|T(597. >4?735f=x 【aspx页面内:<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date")%>
6"2IV }gQnr;lv 显示为: 2004-8-11 19:44:28
$F@ ,,* 5"L.C32 我只想要:2004-8-11 】
s[t?At-> <%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>
Cv<
s| ^= qL[S6/M 应该如何改?
M?qvI R E9`T 【格式化日期】
eB<R"Yvi r:t3Kf`+E- 取出来,一般是object((DateTime)objectFromDB).ToString("yyyy-MM-dd");
> q8)~ riSgb=7q9 【日期的验证表达式】
xQxq33\ mfk^t`w_ A.以下正确的输入格式: [2004-2-29], [2004-02-29 10:29:39 pm], [2004/12/31]
3oApazH* ^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$
dSE"G>l8 g7v(g? B.以下正确的输入格式:[0001-12-31], [9999 09 30], [2002/03/03]
/kqa|=-`q ^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$
xH>j 4@9xq<<5 【大小写转换】
&Y2Dft_K HttpUtility.HtmlEncode(string);
#?DoP]1Y HttpUtility.HtmlDecode(string)
3
5p)e c R-Gg= l5 19.如何设定全局变量
:;w#l"e7< =DXN`]uN Global.asax中
T@ zV 8M7Bw[Q1 Application_Start()事件中
$AdBX}{ =A_fL{ SM 添加Application[属性名] = xxx;
(~?p`g+I.P "6i3'jc` 就是你的全局变量
OgCz[QXr_ (J.k\d 20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口?
x-~=@oiv Am"&ApK HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank")
5wC,:c[H7 }`+9ie7]/ 【ASPNETMENU】点击菜单项弹出新窗口
Cq}E5M yXCHBz 6& 在你的menuData.xml文件的菜单项中加入URLTarget="_blank",如:
%0%Tp <?xml version="1.0" encoding="GB2312"?>
sV]I]DR <MenuData ImagesBaseURL="images/">
e_IRF+> <MenuGroup>
ZQ_AqzT3D <MenuItem Label="内参信息" URL="Infomation.aspx" >
mpd?F'V <MenuGroup ID="BBC">
/1b7f' <MenuItem Label="公告信息" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/>
/sdZf|Zl <MenuItem Label="编制信息简报" URL="NewInfo.aspx" LeftIcon="file.gif" />
sE[
Yg8yAt ......
h*\u0yD) [-VIojs+u 最好将你的aspnetmenu升级到1.2版
@jKB[S;JSn &W*^&0AV 21.读取DataGrid控件TextBox值
nNh5f]] foreach(DataGrid dgi in yourDataGrid.Items)
@el {
6>z,7 [ TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
A5Lzd tb.Text....
\%&eDE 0 }
8"o@$;C XmN8S_M>v 23.在DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang (数量) DG_DanJian(单价) DG_JinE(金额)分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能?
;KT5qiqYH &W{v(@ 〖思归〗
wJh/tb=$o <asp:TemplateColumn HeaderText="数量">
?HeUU <ItemTemplate>
<,y> W! <asp:TextBox id="ShuLiang" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>’
Y;kiU onkeyup="javascript:DoCal()"
Yw_!40` />
ZWQ/BgKB Hz>Dp
! <asp:RegularExpressionValidator id="revS" runat="server" ControlToValidate="ShuLiang" ErrorMessage="must be integer" ValidationExpression="^\d+$" />
jW>K#vj </ItemTemplate>
"NTiQ}i </asp:TemplateColumn>
XJ7pX1nf "6Z(0 iu:{ <asp:TemplateColumn HeaderText="单价">
I8uFMP <ItemTemplate>
kq@~QI?9 <asp:TextBox id="DanJian" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_DanJian")%>’
/dHIm`. Z onkeyup="javascript:DoCal()"
}
g%v<'K />
<T]ey "egpc*|] <asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="must be numeric" ValidationExpression="^\d+(\.\d*)?$" />
0B:
v0R KtHkLYOCG </ItemTemplate>
]`M2Kwp </asp:TemplateColumn>
ygQe'S{!S\ pj7v{H + <asp:TemplateColumn HeaderText="金额">
1:J+`mzpl <ItemTemplate>
IL`=r6\ <asp:TextBox id="JinE" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_JinE")%>’ />
t8`wO+4@ </ItemTemplate>
'UM *7 </asp:TemplateColumn><script language="javascript">
d{Owz&PL function DoCal()
A#Y:VavQ? {
OsKtxtLO var e = event.srcElement;
[pInF
Qh6 var row = e.parentNode.parentNode;
*D.Ajd.G var txts = row.all.tags("INPUT");
]'pL*&"X if (!txts.length || txts.length < 3)
4eJR=h1 return;
L$,yEMCe Nnq1&j"m var q = txts[txts.length-3].value;
iUk#hLLC var p = txts[txts.length-2].value;
zE~Xxp
Z58{YC Y if (isNaN(q) || isNaN(p))
PbsxjP return;
n]i#&[*A( mi[8O$^iJ q = parseInt(q);
!s:e p = parseFloat(p);
'xEK0~awD mhB2l/ txts[txts.length-1].value = (q * p).toFixed(2);
ij;P5OA }
8|zOgn{ </script>
c3r`T{Kf AREjS$ bF5"ab0 <_#2+7Qs f+8 QAvh 24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了。
'gHg&E9E& page_load
\`E^>6!]q page.smartNavigation=true
Ov^##E ~H1<