1. 打开新的窗口并传送参数:
IjJ3CJ< )CihqsA2 传送参数:
w9c response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")
a2o+tR;H 2Hy $SSH 接收参数:
z`f1|Ok string a = Request.QueryString("id");
txTDuS string b = Request.QueryString("id1");
*<s|WLMG +}X@{DB 2.为按钮添加对话框
80axsU^H0 Button1.Attributes.Add("onclick","return confirm(’确认?’)");
M0"xDvQ button.attributes.add("onclick","if(confirm(’are you sure...?’)){return true;}else{return false;}")
0&c12W|B<L YadyRUE 3.删除表格选定记录
{@B<$g int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
3mr9}P9; string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString()
A!goR-J] `')3} 4.删除表格记录警告
? 0nbvV5v7 private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e)
(Cqhk:F {
/':kJOk<[ switch(e.Item.ItemType)
A5Y z| {
:;)K>g,b case ListItemType.Item :
FW=oP>f]w case ListItemType.AlternatingItem :
M2vYOg`t:c case ListItemType.EditItem:
b
s:E`Q TableCell myTableCell;
sq&$ myTableCell = e.Item.Cells[14];
7lf*
v qG LinkButton myDeleteButton ;
gnx!_H\h< myDeleteButton = (LinkButton)myTableCell.Controls[0];
R9fM9 myDeleteButton.Attributes.Add("onclick","return confirm(’您是否确定要删除这条信息’);");
U1J?o#( break;
wGLZzqgq default:
b@z/6y! break;
hPD2/M
}
dhsQfWg#} C+*: lLY }
NC@OmSR\0 'd0]`2tVg4 5.点击表格行链接另一页
u=
!?<Q private void grdCustomer_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
O62H4oT {
V.\do"m //点击表格打开
?5jkb if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
OpUC98p?@ e.Item.Attributes.Add("onclick","window.open(’Default.aspx?id=" + e.Item.Cells[0].Text + "’);");
trtI^^/% }
|brl<*: tE=P9 \4 双击表格连接到另一页
6\/C]![% 1i#M(u_ 在itemDataBind事件中
m7g; psg if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
|HhUU1! {
h68sQd string OrderItemID =e.item.cells[1].Text;
U]d{hY." ...
G W|~sE + e.item.Attributes.Add("ondblclick", "location.href=’../ShippedGrid.aspx?id=" + OrderItemID + "’");
NFU 5+X-c }
MXSPD#gN gKn"e|A 双击表格打开新一页
"*XR'9~7 if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
L%U-MOS= {
"4oY F:h string OrderItemID =e.item.cells[1].Text;
Ej8EQ%P ...
>&Y8VLcK e.item.Attributes.Add("ondblclick", "open(’../ShippedGrid.aspx?id=" + OrderItemID + "’)");
iK= {pd }
3dQV5E. I[@}+p0 ★特别注意:【?id=】 处不能为 【?id =】
N[z7<$$ 6.表格超连接列传递参数
yG2j!D <asp:HyperLinkColumn Target="_blank" headertext="ID号" DataTextField="id" NavigateUrl="aaa.aspx?id=’
Nt'(JAZ; <%# DataBinder.Eval(Container.DataItem, "数据字段1")%>’ & name=’<%# DataBinder.Eval(Container.DataItem, "数据字段2")%>’ />
G8Ns? #3\F<AJ<VB 7.表格点击改变颜色
u])N^AY"sj if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
50uNgLs {
Ql3hq.E e.Item.Attributes.Add("onclick","this.style.backgroundColor=’#99cc00’;
~t.*B& A this.style.color=’buttontext’;this.style.cursor=’default’;");
E@Q+[~H } }
&0*j nb x.xfMM2n 写在DataGrid的_ItemDataBound里
+8v^J8q0 if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
^e8~eL+ {
mJ)o-BV e.Item.Attributes.Add("onmouseover","this.style.backgroundColor=’#99cc00’;
j%#n}H this.style.color=’buttontext’;this.style.cursor=’default’;");
jf~/x>Q e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=’’;this.style.color=’’;");
-[" .km }
Iyz} ;7yVI *'1qA0Xc g75)&U`>} 8.关于日期格式
yL7a*C& NYm2fFPc 日期格式设定
RxjC sjg DataFormatString="{0:yyyy-MM-dd}"
+F]X {^1D|y 我觉得应该在itembound事件中
\%K< S e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd"))
#\GWYWkR E#Smi507p 9.获取错误信息并到指定页面
0x4p!5 $*\[I{Zau} 不要使用Response.Redirect,而应该使用Server.Transfer
v\'Eo*4 Pp*|EW 1 e.g
Q]uxZ;}aF // in global.asax
`h+ sSIko protected void Application_Error(Object sender, EventArgs e) {
&CV%+ if (Server.GetLastError() is HttpUnhandledException)
wm%9>mA% Server.Transfer("MyErrorPage.aspx");
nX7{09 H3H3UIIT_ //其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :)
W}50E.\# }
FrIgu k1 Rjqeuyj:
Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理
jn&[=Y- '+hiCX-_ 10.清空Cookie
qfd/t<?|D Cookie.Expires=[DateTime];
v2 T+I]I Response.Cookies("UserName").Expires = 0
Q"h/o"-h BA4qQCS;5 11.自定义异常处理
}S\ \"SBC //自定义异常处理类
}Dc0 Y using System;
b%IRIi&, using System.Diagnostics;
m-xSF]q=< PO%Z.ol9 namespace MyAppException
LBh|4S$K {
rwWs\~.H /// <summary>
"t$c'` /// 从系统异常类ApplicationException继承的应用程序异常处理类。
S zR7:U /// 自动将异常内容记录到Windows NT/2000的应用程序日志
|JC/A;ZH /// </summary>
-NHA{?6r public class AppException:System.ApplicationException
swss#?.se {
<5%x3e"7u public AppException()
jQxv`H {
sgW*0o if (ApplicationConfiguration.EventLogEnabled)LogEvent("出现一个未知错误。");
$b,o3eC }
dMK|l l}:&} public AppException(string message)
TRW{`b[ {
oKLL~X>!U LogEvent(message);
}1=V`N( }
u [5*RTE TcPYDAa public AppException(string message,Exception innerException)
Q*u4q-DE {
)kfj+/ LogEvent(message);
Km7HB!=< if (innerException != null)
1:h{(
%`& {
56T<s+X> LogEvent(innerException.Message);
]a F,r" }
+Wrj%}+ }
T PEg>[ i0;
p?4`m //日志记录类
e <2?O using System;
`O4Ysk72x9 using System.Configuration;
TUuw using System.Diagnostics;
ZV=O oLt, using System.IO;
E%@,n9T~" using System.Text;
7D PKKvQ using System.Threading;
e"Kg/*Ji1 `a2%U/U namespace MyEventLog
.aTu]i3l_ {
E&ou(Q={ /// <summary>
XUTI0 /// 事件日志记录类,提供事件日志记录支持
DC4O@" /// <remarks>
_+73Y' /// 定义了4个日志记录方法 (error, warning, info, trace)
b9b384Q1O /// </remarks>
gmtp/?>e /// </summary>
fG_.&!P public class ApplicationLog
hfw$820y[ {
\Jq$!foYx /// <summary>
COvcR.*0F /// 将错误信息记录到Win2000/NT事件日志中
}q7rR:g /// <param name="message">需要记录的文本信息</param>
VSns_>o /// </summary>
Y%eFXYk. public static void WriteError(String message)
fn(<
<FA) {
/R\]tl#2j WriteLog(TraceLevel.Error, message);
QT)D|]bH }
wq+% O, v0Ww~4|], /// <summary>
g$$i WC!S< /// 将警告信息记录到Win2000/NT事件日志中
o,}`4_N|| /// <param name="message">需要记录的文本信息</param>
,v(K|P@ /// </summary>
r1dP9MT\8 public static void WriteWarning(String message)
pD;'uEFBQ {
AT*J '37 WriteLog(TraceLevel.Warning, message);
3Run.Gv\ }
V/xGk9L~ 8ExEhBX8 /// <summary>
)%H@.;cD_r /// 将提示信息记录到Win2000/NT事件日志中
@)n xX))a /// <param name="message">需要记录的文本信息</param>
=*<Cw?Gc /// </summary>
Xo^P=uf% public static void WriteInfo(String message)
@Tk5<B3 {
<=D!/7$O WriteLog(TraceLevel.Info, message);
eb%`ox@& }
G- nS0Kn: /// <summary>
%A_h!3f& /// 将跟踪信息记录到Win2000/NT事件日志中
)lB 3U /// <param name="message">需要记录的文本信息</param>
ffDh0mDN /// </summary>
wyG7SA public static void WriteTrace(String message)
G?Fqm@J{XT {
$hv o^$ WriteLog(TraceLevel.Verbose, message);
qI (<5Wxl }
:K
J#_y\rt ;;|S
QX /// <summary>
=@BVO@z@ /// 格式化记录到事件日志的文本信息格式
BCUn[4Gp /// <param name="ex">需要格式化的异常对象</param>
/~=W3lhY /// <param name="catchInfo">异常信息标题字符串.</param>
-36pkC
6
\ /// <retvalue>
LEu_RU? /// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para>
k/'>,WE /// </retvalue>
Z|l/6L8 /// </summary>
J4Yu|E<& public static String FormatException(Exception ex, String catchInfo)
}C6RgE.6< {
]nmVT~lBe" StringBuilder strBuilder = new StringBuilder();
=Rv!c+? if (catchInfo != String.Empty)
N`o[iHUj \ {
V+04X" strBuilder.Append(catchInfo).Append("\r\n");
vSyR%
j }
FZdZGK strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace);
CG!7BP\ return strBuilder.ToString();
{k:W?` }
VSf<(udGr Ky:y1\K1^K /// <summary>
z#DgoA /// 实际事件日志写入方法
=]Gw9sge@ /// <param name="level">要记录信息的级别(error,warning,info,trace).</param>
*SP@`)\D /// <param name="messageText">要记录的文本.</param>
6d%V=1^F /// </summary>
Eu;f~ V private static void WriteLog(TraceLevel level, String messageText)
Tw`n 3y? {
O4Z_v%2M try
FR5P;Yz%H {
acG4u+[ ] EventLogEntryType LogEntryType;
J*I G]2'H switch (level)
s1"dd7&g' {
Z@i"/~B|4\ case TraceLevel.Error:
pGO=3=O LogEntryType = EventLogEntryType.Error;
quky m3F break;
yxz)32B? case TraceLevel.Warning:
Wra$ LogEntryType = EventLogEntryType.Warning;
"CH3\O\ break;
L_ &` case TraceLevel.Info:
^}VAH#c LogEntryType = EventLogEntryType.Information;
jPu m2U_ break;
J]m[0g7O_ case TraceLevel.Verbose:
],.1=iY LogEntryType = EventLogEntryType.SuccessAudit;
DAvF ND$= break;
+c&oF,=}!P default:
?^f=7e8] LogEntryType = EventLogEntryType.SuccessAudit;
'=eG[#gy break;
lxVA:tz0 }
LN!e_b n\/ JNzd3 EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
o$4xinK //写入事件日志
v%|S)^c?: eventLog.WriteEntry(messageText, LogEntryType);
VyF|d?b >)+-: }
#gQaNc? catch {} //忽略任何异常
h!yI(cY }
%qI.Qw$ } //class ApplicationLog
sfo+B$4| }
TAE@KSPvo )fGIe rS 12.Panel 横向滚动,纵向自动扩展
3 *g>kRMJ <asp:panel style="overflow-x:scroll;overflow-y:auto;"></asp:panel>
;5cN
o& ZUg~8VVe 13.回车转换成Tab
|L }1@0i <script language="javascript" for="document" event="onkeydown">
)0\"8}! if(event.keyCode==13 && event.srcElement.type!=’button’ && event.srcElement.type!=’submit’ && event.srcElement.type!=’reset’ && event.srcElement.type!=’’&& event.srcElement.type!=’textarea’);
|``rSEXYs event.keyCode=9;
.5s#JL </script>
W08rGY D~^P}_e. onkeydown="if(event.keyCode==13) event.keyCode=9"
;]c:0W' #uc9eh}CWO 14.DataGrid超级连接列
j92X"yB DataNavigateUrlField="字段名" DataNavigateUrlFormatString="
http://xx/inc/delete.aspx?ID={0}"
d~hN`ff |mS-<e8LY4 15.DataGrid行随鼠标变色
gt>k]0 private void DGzf_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
AJJa<c+j {
P #PRzt if (e.Item.ItemType!=ListItemType.Header)
7kT&}`g. {
}M0GPpv e.Item.Attributes.Add( "onmouseout","this.style.backgroundColor=\""+e.Item.Style["BACKGROUND-COLOR"]+"\"");
g]mR;T3 e.Item.Attributes.Add( "onmouseover","this.style.backgroundColor=\""+ "#EFF3F7"+"\"");
rYn)E=FG/ }
*ydh.R<hb }
C)z?-f J^y}3ON 16.模板列
D\@)*" <ASP:TEMPLATECOLUMN visible="False" sortexpression="demo" headertext="ID">
zn3]vU! <ITEMTEMPLATE>
]iq2_{q <ASP:LABEL text=’<%# DataBinder.Eval(Container.DataItem, "ArticleID")%>’ runat="server" width="80%" id="lblColumn" />
ag*5fBF </ITEMTEMPLATE>
Y<WA-dYoF </ASP:TEMPLATECOLUMN>
.{8?eze[m Xus TU <ASP:TEMPLATECOLUMN headertext="选中">
6[k7e!& <HEADERSTYLE wrap="False" horizontalalign="Center"></HEADERSTYLE>
8N,mp>~ <ITEMTEMPLATE>
fvNj5Vq: <ASP:CHECKBOX id="chkExport" runat="server" />
#`5>XfbmQ( </ITEMTEMPLATE>
lK2=[%,~ <EDITITEMTEMPLATE>
ZR[6- <ASP:CHECKBOX id="chkExportON" runat="server" enabled="true" />
)?$zY5 </EDITITEMTEMPLATE>
Q&?^eOI( </ASP:TEMPLATECOLUMN>
\r5L7y$9 h UzKB "Q 后台代码
UNOKK_ protected void CheckAll_CheckedChanged(object sender, System.EventArgs e)
;x|LB>. {
Pxy+W*t //改变列的选定,实现全选或全不选。
x^XP<R{D CheckBox chkExport ;
$E@U-=m if( CheckAll.Checked)
;JHR~ TV {
zu!# foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
l2h1CtAU {
\&,{N_G#L. chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
12TX_ 0 chkExport.Checked = true;
}b/Xui9Q }
OTmw/ #ug }
z[?&bF<| else
G|eJac> {
m2x=Qv][@c foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
p`=v$_]?( {
9Z^\b)x chkExport = (CheckBox)oDataGridItem.FindControl("chkExport");
&VdKL2 chkExport.Checked = false;
d>1cKmH! }
IA3m.Vxj ^ }
q}r{%ypf }
'mm~+hp VTl\'>(Cl 17.数字格式化
]ddTHl MD+e!A# o 【<%#Container.DataItem("price")%>的结果是500.0000,怎样格式化为500.00?】
HbZFL*2x3 <%#Container.DataItem("price","{0:¥#,##0.00}")%>
y8Oz4| T$&vk#qr int i=123456;
KfkU_0R+~v string s=i.ToString("###,###.00");
sD{d8s[( {;^GKb+ 18.日期格式化
1> 'xmp+# wN2D{Jj 【aspx页面内:<%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date")%>
zS/1v+ mrGfu:r 显示为: 2004-8-11 19:44:28
F['%?+<3 w^=uq3X? 我只想要:2004-8-11 】
3'xmq <%# DataBinder.Eval(Container.DataItem,"Company_Ureg_Date","{0:yyyy-M-d}")%>
qbq.r&F& 8 \Uy 应该如何改?
l<8+>W`_ Rz:1(^oA 【格式化日期】
' &<saqA n?S~(4% 取出来,一般是object((DateTime)objectFromDB).ToString("yyyy-MM-dd");
SpA-E/el .:9XpKbt 【日期的验证表达式】
fI"OzIJV VxqoE]Dh A.以下正确的输入格式: [2004-2-29], [2004-02-29 10:29:39 pm], [2004/12/31]
+&*Ybbhb ^((\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})))?$
yP*oRV%uX ^EZ?wdL B.以下正确的输入格式:[0001-12-31], [9999 09 30], [2002/03/03]
_`d=0l*8 ^\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]))$
3,dIW*<**
PE&$2( 【大小写转换】
d8N4@3 CkL HttpUtility.HtmlEncode(string);
,wB)hp HttpUtility.HtmlDecode(string)
L
4Sa,ZL @E%fAC 19.如何设定全局变量
-Zfq:Kr `6FH@" |I Global.asax中
+T8]R7b9 B"3uuk8 Application_Start()事件中
0fAo&B [{-5 添加Application[属性名] = xxx;
wCw_aXqq byN4?3F 就是你的全局变量
Nc\jA= ;uyQ R8 20.怎样作到HyperLinkColumn生成的连接后,点击连接,打开新窗口?
DP08$Iq
hpOK9 HyperLinkColumn有个属性Target,将器值设置成"_blank"即可.(Target="_blank")
7f]O / aBT8mK -. 【ASPNETMENU】点击菜单项弹出新窗口
0RGqpJxk CQh6;[\: 在你的menuData.xml文件的菜单项中加入URLTarget="_blank",如:
|TRl>1rv <?xml version="1.0" encoding="GB2312"?>
5$%CRm <MenuData ImagesBaseURL="images/">
~zcB@; : <MenuGroup>
CJf4b:SY@ <MenuItem Label="内参信息" URL="Infomation.aspx" >
jVInTR0f[ <MenuGroup ID="BBC">
ofy)}/i <MenuItem Label="公告信息" URL="Infomation.aspx" URLTarget="_blank" LeftIcon="file.gif"/>
wY{!gQ <MenuItem Label="编制信息简报" URL="NewInfo.aspx" LeftIcon="file.gif" />
6>F1!Q ......
.,&6 x. IiZXIG4H 最好将你的aspnetmenu升级到1.2版
*zl-R*bM$ >fx/TSql:J 21.读取DataGrid控件TextBox值
G`R_kg9$ foreach(DataGrid dgi in yourDataGrid.Items)
l*]nvd_ {
3}x6IM2 TextBox tb = (TextBox)dgi.FindControl("yourTextBoxId");
RWdx)qj{ tb.Text....
M <ccfU! }
>gZ"^iW qLk7C0 23.在DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang (数量) DG_DanJian(单价) DG_JinE(金额)分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能?
F,h}HlU 4mwLlYZ 〖思归〗
}cd-BW <asp:TemplateColumn HeaderText="数量">
ROj9#: <ItemTemplate>
x>[f+Tc <asp:TextBox id="ShuLiang" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>’
C3-I5q(V] onkeyup="javascript:DoCal()"
tr$d? />
Bs';!,= .Dt.7 G <asp:RegularExpressionValidator id="revS" runat="server" ControlToValidate="ShuLiang" ErrorMessage="must be integer" ValidationExpression="^\d+$" />
=0_((eXwf </ItemTemplate>
l(uV@_3 </asp:TemplateColumn>
)@E'yHYO> sV-UY!
<asp:TemplateColumn HeaderText="单价">
!WNO!S0/j <ItemTemplate>
|6T"T P <asp:TextBox id="DanJian" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_DanJian")%>’
A}MF>.!}C onkeyup="javascript:DoCal()"
=0mXTY1 />
A"Sp7M[J R~N'5#.*M <asp:RegularExpressionValidator id="revS2" runat="server" ControlToValidate="DanJian" ErrorMessage="must be numeric" ValidationExpression="^\d+(\.\d*)?$" />
UmOK7SPi pL`)^BJ </ItemTemplate>
z2god 1" </asp:TemplateColumn>
(/gMtIw )g[7XB/w <asp:TemplateColumn HeaderText="金额">
(F'?c1 <ItemTemplate>
6;p"xC- <asp:TextBox id="JinE" runat=’server’ Text=’<%# DataBinder.Eval(Container.DataItem,"DG_JinE")%>’ />
*#c^.4$' </ItemTemplate>
M(#]NTr ~4 </asp:TemplateColumn><script language="javascript">
Qo])A6$IU function DoCal()
3im2
`n {
)mE67{YJh~ var e = event.srcElement;
,N@N4<C] var row = e.parentNode.parentNode;
BBHoD:l var txts = row.all.tags("INPUT");
by*v($ if (!txts.length || txts.length < 3)
G ; return;
o{xA{ @< 3 ,
nr*R! var q = txts[txts.length-3].value;
]X<L~s_* var p = txts[txts.length-2].value;
v\Edf;( P;[>TCs ]8 if (isNaN(q) || isNaN(p))
?Y'r=Q{w return;
Na{&aqdz K?H(jP2mpM q = parseInt(q);
1SY3 p = parseFloat(p);
V2BsvR` 2X|nPhNi txts[txts.length-1].value = (q * p).toFixed(2);
P/ 7aj:h~P }
0JX/@LNg0 </script>
_0!<iN L [J+]1hCZ| "Tc[1{eI #b+>O+vx8 &d i=alvv1 24.datagrid选定比较底下的行时,为什么总是刷新一下,然后就滚动到了最上面,刚才选定的行因屏幕的关系就看不到了。
g0Jy:`M page_load
z:p9&mi