第6章Web窗体的高级控件.docx

上传人:b****4 文档编号:4344514 上传时间:2022-11-30 格式:DOCX 页数:27 大小:912.85KB
下载 相关 举报
第6章Web窗体的高级控件.docx_第1页
第1页 / 共27页
第6章Web窗体的高级控件.docx_第2页
第2页 / 共27页
第6章Web窗体的高级控件.docx_第3页
第3页 / 共27页
第6章Web窗体的高级控件.docx_第4页
第4页 / 共27页
第6章Web窗体的高级控件.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

第6章Web窗体的高级控件.docx

《第6章Web窗体的高级控件.docx》由会员分享,可在线阅读,更多相关《第6章Web窗体的高级控件.docx(27页珍藏版)》请在冰豆网上搜索。

第6章Web窗体的高级控件.docx

第6章Web窗体的高级控件

第6章Web窗体的高级控件

VS2008

上一章中讲解了ASP.NET中常用的基本控件,ASP.NET不仅提供了常用的基本控件如标签控件、文本框控件等,还提供了高级的Web窗体的控件。

这些控件能够轻松实现更多在ASP开发中难以实现的效果。

6.1登录控件

对于目前常用的网站系统而言,登录功能是必不可少的,例如论坛、电子邮箱、在线购物等。

登录功能能够让网站准确的验证用户的身份。

用户能够访问该网站时,可以注册并登录,登录后的用户还能够注销登录状态以保证用户资料的安全性。

ASP.NET就提供了一系列的登录控件方便登录功能的开发。

6.1.1登录控件(Login)

登录控件是一个复合控件,它包含用户名和密码文本框,以及一个询问用户是否希望在下一次访问该页面时记起其身份的复选框。

当用户勾选此选项时,下一次用户访问此网站后,将自动进行身份验证。

创建一个登录控件代码,系统会自动生成相应的HTML代码,示例代码如下所示。

LoginID="Login1"runat="server">

Login>

上述代码则创建了一个登录控件,如图6-1所示。

开发人员可以通过属性的设置更改登录控件的样式等,如图6-2所示。

图6-1默认登录窗口图6-2登录框属性的设置

开发人员能够使用登录控件执行用户登录操作而无需复杂的代码实现,登录控件常用的属性如下所示。

❑Orientation:

控件的一般布局。

❑TextLayout:

标签相对于文本框的布局。

❑CreatUserIconUrl:

用户创建用户连接的图标的URL。

❑CreatUserText:

为“创建用户”连接显示的文本。

❑CreatUserUrl:

创建用户页的URL。

❑HelpPageIconUrl:

用于帮助页连接的图标的URL。

❑HelpPageText:

为帮助连接显示的文本。

❑HelpPageUrl:

帮助页的URL。

❑PasswordRecoveryIconUrl:

用于密码回复连接的图标的URL。

❑PasswordRecoveryUrl:

为密码回复连接显示的文本。

❑PasswordRecoveryText:

密码回复页的URL。

❑MembershipProvider:

成员资格提供程序的名称。

❑FailuteText:

当登录尝试失败时显示的文本。

❑InstructionText:

为给出说明所显示的文本。

❑LoginButtonImageUrl:

为“登录”按钮显示的图像的URL。

❑LoginButtonText:

为“登录”按钮显示的文本。

❑LoginButtonType:

“登录”按钮的类型。

❑PasswordLableText:

密码标识文本框内的文本。

❑RememberMeText:

为“记住我”复选框所显示的文本。

❑TitleText:

为标题显示的文本。

❑UserName:

用户名文本框内的初始值。

❑UserNameLableText:

标识用户名文本框的文本。

❑DestinationPageUrl:

用户成功登录时被定向到的URL。

❑DisplayRememberMe:

是否显示“记住我”复选框。

❑Enabled:

控件是否处于启动状态。

❑RememberMeSet:

“记住我”复选框是否初始化被选中。

❑VisibleWhenLoggedIn:

是否控件在用户登录时保持可见。

❑PasswordRequiredErrorMessage:

密码为空时在验证摘要中显示的文本。

❑UserNameRequiredErrorMessage:

用户名为空时在验证摘要中显示的文本。

同样,登录控件还包括许多常用的事件,登录控件常用的事件如下所示:

❑Authenticate:

当用户使用登录控件登录到网站时,引发该事件。

❑LoggedIn:

对用户进行身份验证后引发该事件。

❑LoggingIn:

对用户进行身份验证前引发该事件。

❑LoginError:

对用户进行用户身份验证失败时引发该事件。

开发人员能够在页面中拖动相应的登录控件实现登录操作,使用登录控件进行登录操作可以直接进行用户的信息的查询而无需复杂的登录实现。

6.1.2登录名称控件(LoginName)

登录名称控件(LoginName)是一个用来显示已经成功登录的用户的控件。

在Web应用程序开发中,开发人员常常需要在页面中通知相应的用户已经登录,如用户在商品网站上进行登录,登录成功后可以在相应的页面中提示“您已登录,您的用户名是XXX”等,这样不仅能够提高用户的友好度,也能够让开发人员在Web应用程序中方便的对用户信息做收集整理。

开发人员能够方便的在应用程序中拖动LoginName控件用于用户名的呈现,拖动到页面中,系统生成的HTML代码如下所示。

LoginNameID="LoginName1"runat="server"/>

上述代码则实现了一个登录名称控件,开发人员能够将该控件放置在页面中的任何位置进行页面呈现,当用户登录后,该控件能够获取用户的相应信息并呈现用户名在控件中。

登录控件页面效果如图6-3所示。

图6-3登录名称控件

注意:

LoginName控件只能够在标记内的标记中使用,该控件不能够使用于、<style>等标记中。</p><p>在LoginName控件中,最常用的属性为FormatString属性,该属性用于格式化用户名输出。</p><p>在控件的FormatString属性中,“{0}”字符串用于显式用户名,开发人员能够配置相应的字符串进行输出,例如配置成“您好,{0},您已经登录!</p><p>”,可以在相应的占位符中呈现相应的用户名,如图6-4所示。</p><p>图6-4格式化输出用户名</p><p>正如图6-4所示,当对LoginName进行格式化规定后,用户名能够被格式化输出,例如当用户soundbbg登录在Web应用后,该控件会呈现“您好,soundbbg,您已登录!</p><p>”。</p><p>开发人员只需要通过简单的配置就能够实现复杂的登录显示功能操作的实现。</p><p>6.1.3登录视图控件(LoginView)</p><p>在应用程序的开发过程中,通常需要对不同的身份和权限的用户进行不同登录样式的呈现,开发人员可以为用户配置内置对象以呈现不同的页面效果。</p><p>但是在页面请求时,还需要对用户的身份进行验证。</p><p>在ASP.NET2.0之后的版本中,系统提供了LoginView控件用于不同用户权限之间的视图的区分。</p><p>在开发一个应用程序时,开发人员希望应用程序能够实现功能当用户在网站中没有登录时,用户看到的视图是没有登录时的视图,包括网站的风格、系统的提示信息等。</p><p>而当用户登录后,用户看到的视图是登录后的视图,同样包括网站的风格、系统的提示信息等。</p><p>LoginView控件为开发人员提供了不同权限的用户进行不同视图的查看的功能,开发人员能够拖动LoginView控件在页面中以编辑不同的页面进行开发。</p><p>拖动一个LoginView控件在页面中,开发人员能够通过编辑不同的模板进行不同权限的页面的编写,拖动LoginView控件后系统生成的HTML代码如下所示。</p><p><asp:</p><p>LoginViewID="LoginView1"runat="server"></p><p></asp:</p><p>LoginView></p><p>上述代码为默认的LoginView控件的代码,开发人员需要通过编写相应的模板以便不同的用户查看不同的页面,在LoginView控件中,包括两个最常用的模板,这两个模板及其作用分别如下所示。</p><p>❑AnonymousTemplate:</p><p>匿名模板,当用户没有进行登录时,该模板会呈现在匿名用户面前。</p><p>❑LoggedInTemplate:</p><p>已登录模板,当用户已经登录成功后,该模板会呈现在已经登录的用户面前。</p><p>开发人员可以通过编写相应的模板进行页面的呈现,当用户没有登录时,用户可以看见AnonymousTemplate模板中的内容而无法看见LoggedInTemplate模板的内容;而如果用户已经登录,则登录过后的用户能够看见LoggedInTemplate模板的内容而无法看见AnonymousTemplate模板的内容,如图6-5所示。</p><p>图6-5LoginView控件</p><p>在AnonymousTemplate模板中,该模板通过获取和判断PageUser属性的Name属性进行判断。</p><p>如果PageUser属性的Name属性为空时,AnonymousTemplate模板则不会向通过身份验证的用户的呈现相应的页面。</p><p>开发人员可以通过编写AnonymousTemplate模板和LoggedInTemplate模板进行不同用户的样式呈现,示例代码如下所示。</p><p><body></p><p><formid="form1"runat="server"></p><p><div></p><p><asp:</p><p>LoginViewID="LoginView1"runat="server"></p><p><LoggedInTemplate></p><p>这是一个登录用户可以访问的页面..</p><p></LoggedInTemplate></p><p><AnonymousTemplate></p><p>这是一个匿名用户可以访问的页面..</p><p></AnonymousTemplate></p><p></asp:</p><p>LoginView></p><p></div></p><p></form></p><p></body></p><p>上述代码为不同权限的用户配置了不同的模板,当不同权限的用户访问页面时,其看到的页面样式也是不同的。</p><p>在LoginView控件中,还能够为不同权限和身份的用户配置不同的模板,开发人员能够为不同的用户分配不同的角色。</p><p>当用户被分配了不同的角色后,用户能够通过相应的角色访问相应的模板,例如普通用户可以访问普通用户模板,VIP用户可以访问VIP模板而管理员可以访问管理员模板。</p><p>在LoginView控件中,单击RoleGroup集合,可以添加相应的LoginView控件的RoleGroup集合,如图6-6所示。</p><p>图6-6添加RoleGroup集合</p><p>这里添加了两个RoleGroup集合,该RoleGroup集合分别包含admin和VIP两种用户类别,当用户为admin或VIP是,可以通过相应的权限绑定进行不同模板的访问,创建后示例代码如下所示。</p><p><asp:</p><p>LoginViewID="LoginView1"runat="server"></p><p><RoleGroups></p><p><asp:</p><p>RoleGroupRoles="admin"></p><p><ContentTemplate></p><p>这是一个管理员用户可以访问的页面..</p><p></ContentTemplate></p><p></asp:</p><p>RoleGroup></p><p><asp:</p><p>RoleGroupRoles="vip"></p><p><ContentTemplate></p><p>这是一个VIP用户可以访问的页面</p><p></ContentTemplate></p><p></asp:</p><p>RoleGroup></p><p></RoleGroups></p><p><LoggedInTemplate></p><p>这是一个登录用户可以访问的页面..</p><p></LoggedInTemplate></p><p><AnonymousTemplate></p><p>这是一个匿名用户可以访问的页面..</p><p></AnonymousTemplate></p><p></asp:</p><p>LoginView></p><p>当有不同身份的用户访问该控件时,控件能够通过用户的身份进行不同模板的呈现,这样就方便了开发人员对不同身份和权限的用户进行网站应用程序和模板的访问限制了。</p><p>注意:</p><p>当一个用户拥有的身份或权限不在列表的权限中时,该用户会默认访问LoggedInTemplate模板,并且无论是LoggedInTemplate模板还是RoleGroup模板,都不会对匿名用户呈现。</p><p>6.1.4登录状态控件(LoginStatus)</p><p>登录状态控件(LoginStatus)用于显式用户验证时的状态,LoginStatus包括“登录”和“注销”两种状态,对于LoginStatus控件的状态是由相应的Page对象的Request属性中的IsAuthenticated属性进行决定。</p><p>开发人员能够直接将LoginStatus控件拖放在页面中,从而让用户能够通过相应的状态进行登录或注销操作,LoginStatus控件默认HTML代码如下所示。</p><p><asp:</p><p>LoginStatusID="LoginStatus1"runat="server"/></p><p>上述代码就呈现了一个LoginStatus控件,LoginStatus控件默认的呈现形式是以文本的形式呈现的,如图6-7所示。</p><p>图6-7LoginStatus控件呈现形式</p><p>正如图6-7所示,LoginStatus控件默认的呈现形式是以文本的形式呈现的。</p><p>当用户没有在网站上进行登录操作时,该控件会呈现登录字样给用户以便用户进行登录操作,当用户登录后,LoginStatus控件会为用户提供注销字样以便用户进行注销操作。</p><p>开发人员还能够为LoginStatus控件指定以图片形式进行登录和注销,LoginStatus控件常用的属性如下所示。</p><p>❑LoginImageUrl:</p><p>设置或获取用于登录连接的图像URL。</p><p>❑LoginText:</p><p>设置或获取用于登录连接的文本。</p><p>❑LogoutAction:</p><p>设置或获取一个值用于用户从网站注销时执行的操作。</p><p>❑LogoutImageUrl:</p><p>设置或获取一个值用于登出图片的显示。</p><p>❑LogoutPageUrl:</p><p>设置或获取一个值用于登出连接的图像URL。</p><p>❑LougoutText:</p><p>设置或一个值用于登出连接的文本。</p><p>❑TagKey:</p><p>获取LoginStatus控件的HtmlTextWriterTag的值。</p><p>开发人员可以配置LoginImageUrl以及LogoutImageUrl属性进行登录、登出的图片显示,使用图片进行登录登出操作能够提高用户体验,示例代码如下所示。</p><p><body></p><p><formid="form1"runat="server"></p><p><div></p><p><asp:</p><p>LoginStatusID="LoginStatus1"runat="server"LoginImageUrl="~/login.jpg"</p><p>LogoutImageUrl="~/logout.jpg"/></p><p></div></p><p></form></p><p></body></p><p>上述代码指定了当用户没有登录时,相应的登录操作以图片的形式呈现在页面中,同样当用户登录后,注销操作也会以图片的形式呈现在页面中,如图6-8所示。</p><p>图6-8图片形式呈现</p><p>LoginStatus控件还包括两个常用事件,这两个事件分别为LoggingOut和LoggedOut。</p><p>当用户单击注销按钮时会触发LoggingOut事件,开发人员能够在LoggingOut事件中编写相应的事件以清除用户的身份信息,这些信息包括Session、Cookie等。</p><p>开发人员还能够在LoggedOut事件中规定在用户离开网站时所必须执行的操作。</p><p>6.1.5密码恢复控件(PasswordRecovery)</p><p>当用户进行Web应用程序访问时,在有些情况下会丢失用户密码,这样就需要通过Web应用程序恢复自己的密码。</p><p>在应用程序开发中,为了提高系统的安全性和用户信息的私密性,开发人员常常需要编写诸多代码来保存用户的信息并进行用户请求的检测。</p><p>ASP.NET中提供了密码恢复控件以便开发人员能够在Web应用中轻松的能够让用户自行进行密码回复。</p><p>开发人员能够拖动一个PasswordRecovery控件在页面中,系统能够在主窗口中创建一个PasswordRecovery控件所必须的声明,示例代码如下所示。</p><p><asp:</p><p>PasswordRecoveryID="PasswordRecovery1"runat="server"></p><p></asp:</p><p>PasswordRecovery></p><p>开发人员能够使用PasswordRecovery控件进行相应的配置,包括自动太用格式、视图配置、转换成模板以及网站管理等,如图6-9所示。</p><p>对于PasswordRecovery控件而言,开发人员能够单击PasswordRecovery控件的属性进行相应的配置,例如选择自动套用格式,单击【自动套用格式】按钮进行格式的选取,如图6-10所示。</p><p>图6-9默认的PasswordRecovery控件图6-10选择默认格式</p><p>开发人员可以选择自动套用格式进行模板的编写,以提高用户体验,开发人员还能够自行编写模板进行PasswordRecovery控件的样式控制,选择相应的样式后,系统会自行生成样式控制代码,示例代码如下所示。</p><p><asp:</p><p>PasswordRecoveryID="PasswordRecovery1"runat="server"BackColor="#F7F7DE"</p><p>BorderColor="#CCCC99"BorderStyle="Solid"BorderWidth="1px"</p><p>Font-Names="Verdana"Font-Size="10pt"></p><p><TitleTextStyleBackColor="#6B696B"Font-Bold="True"ForeColor="#FFFFFF"/></p><p></asp:</p><p>PasswordRecovery></p><p>开发人员能够通过修改上面的颜色进行样式控制。</p><p>在PasswordRecovery控件中,除了能够自动套用和开发PasswordRecovery控件的格式外,开发人员还能够为PasswordRecovery控件相应的功能进行样式控制。</p><p>PasswordRecovery控件包括三个基本功能,分别为【用户名】、【密码提示问题】和【成功模板】。</p><p>在用户使用PasswordRecovery控件进行密码恢复时,首先需要输入用户名进行用户名的匹配。</p><p>如果用户名匹配后PasswordRecovery控件要求用户进行问题答案的填写。</p><p>如果答案正确,PasswordRecovery控件能够为用户显示【成功模板】。</p><p>开发人员能还够分别为三个功能进行模板创建。</p><p>在默认情况下,开发人员不能够进行模板的编辑,开发人员可以选择PasswordRecovery控件中【管理】菜单中的【转换为模板】选项进行相应的模板转换,如图6-11所示。</p><p>图6-11转换为模板</p><p>当转换为模板之后,开发人员就能够在模板中编写相应的文档或样式控制提高用户体验的友好度。</p><p>在编写相应的模板后,该控件中的三个功能会分别被生成为模板形式而存在,示例代码如下所示。</p><p><QuestionTemplate></p><p><tableborder="0"cellpadding="1"cellspacing="0"style="border-collapse:</p><p>collapse;"></p><p><tr></p><p><td></p><p><tableborder="0"cellpadding="0"></p><p><tr></p><p><tdalign="center"colspan="2"style="color:</p><p>White;background-color:</p><p>#6B696B;font-weight:</p><p>bold;"></p><p>标识确认</td></p><p></tr></p><p><tr></p><p><tdalign="center"colspan="2">要接收您的密码,请回答下列问题。</p><p>只有当填写了相应的问题后,</p><p>您的用户密码才能够被恢复</td></p><p></tr></p><p><tr></p><p><tdalign="right">用户名:</p><p></td></p><p><td></p><p><asp:</p><p>LiteralID="UserName"runat="server"></asp:</p><p>Literal></p><p></td></p><p></tr></p><p><tr></p><p><tdalign="right">问题:</p><p></td></p><p><td></p><p><asp:</p><p>LiteralID="Question"runat="server"></asp:</p><p>Literal></p><p></td></p><p></tr></p><p><tr></p><p><tdalign="right"></p><p><asp:</p><p>LabelID="AnswerLabel"runat="server"AssociatedControlID="Answer">答案:</p><p></asp:</p><p>Label></p><p></td></p><p><td></p><p><asp:</p><p>TextBoxID="Answer"runat="server"></asp:</p><p>TextBox></p><p><asp:</p><p>RequiredFieldValidatorID="AnswerRequired"runat="server"</p><p>ControlToValidate="Answer"ErrorMessage="需要答案。</p><p>"</p><p>ToolTip="需要答案。</p><p>"ValidationGroup="PasswordRecovery1">*</asp:</p><p>RequiredFieldValidator></p><p></td></p><p></tr></p><p><tr></p><p><tdalign="center"colspan="2"style="color:</p><p>Red;"></p><p><asp:</p><p>LiteralID="FailureText"runat="server"EnableViewState="False"></asp:</p><p>Literal></p><p></td></p><p></tr></p><p><tr></p><p><tdalign="right"colspan="2"></p><p><asp:</p><p>Buttonid="SubmitButton"runat="server"commandname="Submit"</p><p>text="提交"validationgroup="PasswordRecovery1"/></p><p></td></p><p></tr></p><p></table></p><p></td></p><p></tr></p><p></table></p><p></QuestionTemplate></p><p>上述代码实现了【提问模板】中的模板信息和样式,当用户进入提问功能时会呈现该模板。</p><p>当用户输入用户名时,系统会查找相应的用户信息并跳转到提问页面。</p><p>如果用户回答自己提问的问题并回答正确后,PasswordRecovery控件会将密码发送到相应的邮箱中,而如果用户回答出错,PasswordRecovery控件就保留密码,以提高系统的安全性。</p><p>6.1.6密码更改控件(ChangePassword)</p><p>在应用程序开发中,开发人员需要编写密码更改控件让用户能够快速的进行密码更改。</p><p>在应用程序的使用中,用户会经常需要更改密码,更改密码有很多的可能性。</p><p>例如用户进行登录后发现自己的用户信息可能被其他人改动过,就有可能怀疑密码泄露的问题,这样用户就可以通过更改密码进行密码的更换。</p><p>另外,如果用户在注册时的密码是系统自动生成的密码,用户同样需要在密码更改控件中修改生成的密码以便用户记忆。</p><p>在ASP.NET中提供了密码更改控件以便开发人员能够轻易的完成密码更改功能。</p><p>拖放一个密码更改控件在页面,系统会自动生成相应的HTML代码,示例代码如下所示。</p><p><asp:</p><p>ChangePasswordID="ChangePassword1"runat="server"></p><p></asp:</p><p>ChangePassword></p><p>ChangePassword控件包括密码、新密码和确认新密码,如图6-12所示。</p><p>图6-12ChangePassword控件</p><p>当用户需要更改密码时,用户必须先填写旧密码进行密码的验证,如果用户填写的旧密码是正确的密码,则系统会将新密码替换旧密码以便用户下次登录时使用新密码。</p><p>如果用户填写的旧密码不正确,则系统会认为可</p> </div> <div class="readmore" onclick="showmore()" style="background-color:transparent; height:auto; margin:0px 0px; padding:20px 0px 0px 0px;"><span class="btn-readmore" style="background-color:transparent;"><em style=" font-style:normal">展开</em>阅读全文<i></i></span></div> <script> function showmore() { $(".readmore").hide(); $(".detail-article").css({ "height":"auto", "overflow": "hidden" }); } $(document).ready(function() { var dh = $(".detail-article").height(); if(dh >100) { $(".detail-article").css({ "height":"100px", "overflow": "hidden" }); } else { $(".readmore").hide(); } }); </script> </div> <script> var defaultShowPage = parseInt("5"); var id = "4344514"; var total_page = "27"; var mfull = false; var mshow = false; function DownLoad() { window.location.href='https://m.bdocx.com/down/4344514.html'; } function relate() { var reltop = $('#relate').offset().top-50; $("html,body").animate({ scrollTop: reltop }, 500); } </script> <script> var pre = "https://file1.bdocx.com/fileroot1/2022-11/30/0d885ca8-6496-4cf2-8bcd-7d1b0cc73d7b/0d885ca8-6496-4cf2-8bcd-7d1b0cc73d7b"; var freepage = parseInt('20'); var total_c = parseInt('27'); var start = defaultShowPage; var adcount = 0; var adindex = 0; var adType_list = ";0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;"; var end = start; function ShowSvg() { end = start + defaultShowPage; if (end > freepage) end = freepage; for (var i = start; i < end; i++) { var imgurl = pre + (i + 1) + '.gif'; var html = "<img src='" + imgurl + "' onerror=\"this.src='/images/s.gif'\" alt=\"第6章Web窗体的高级控件.docx_第" + (i + 1) + "页\" width='100%'/>"; $("#page").append("<div class='page'>" + html + "</div>"); $("#page").append("<div class='pageSize'>第" + (i + 1) + "页 / 共" + total_c + "页</div>"); if(adcount > 0 && adType_list.indexOf(";"+(i+1)+";")>-1) { if(adindex > (adcount-1)) adindex = 0; $("#page").append("<div class='pagead' id='addiv"+(i + 1)+"'></div>"); document.getElementById("addiv"+(i + 1)+"").innerHTML =document.getElementById("adpre" + adindex).outerHTML; adindex += 1; } } start = end; if (start > (freepage - 1)) { if (start < total_c) { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页,到这儿已超出免费预览范围,如果喜欢就下载吧!"); } else { $("#pageMore").removeClass("btnmore"); $("#pageMore").html("亲,该文档总共" + total_c + "页全部预览完了,如果喜欢就下载吧!"); } } } //$(document).ready(function () { // ShowSvg(); //}); </script> <div id="relate" class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">相关资源</div> <div id="relatelist" style="padding-left:5px;"> <ul> <li><em class="pptx"/></em><a target="_parent" href="https://m.bdocx.com/doc/30861721.html" title="《城市轨道交通专用通信系统维护》教学课件合集..pptx">《城市轨道交通专用通信系统维护》教学课件合集..pptx</a> </li><li><em class="docx"/></em><a target="_parent" href="https://m.bdocx.com/doc/30861715.html" title="病理学技术(师)专业知识题库附答案(520题).docx">病理学技术(师)专业知识题库附答案(520题).docx</a> </li><li><em class="docx"/></em><a target="_parent" href="https://m.bdocx.com/doc/30861713.html" title="《向量的数乘运算》教案、导学案、课后作业.docx">《向量的数乘运算》教案、导学案、课后作业.docx</a> </li><li><em class="doc"/></em><a target="_parent" href="https://m.bdocx.com/doc/30861709.html" title="2016年河南省公务员考试职位表.doc">2016年河南省公务员考试职位表.doc</a> </li><li><em class="pptx"/></em><a target="_parent" href="https://m.bdocx.com/doc/30857920.html" title="2021年粤教粤科版四年级科学下册第三单元《运动与力》课件.pptx">2021年粤教粤科版四年级科学下册第三单元《运动与力》课件.pptx</a> </li><li><em class="ppt"/></em><a target="_parent" href="https://m.bdocx.com/doc/30857919.html" title="粤教粤科版科学四年级上册全册教学课件.ppt">粤教粤科版科学四年级上册全册教学课件.ppt</a> </li><li><em class="pptx"/></em><a target="_parent" href="https://m.bdocx.com/doc/30857918.html" title="【精品资料】职业创新创业---第五章.pptx">【精品资料】职业创新创业---第五章.pptx</a> </li><li><em class="ppt"/></em><a target="_parent" href="https://m.bdocx.com/doc/30857917.html" title="八年级美术下册主题策划第8课做一回服装设计师课件.ppt">八年级美术下册主题策划第8课做一回服装设计师课件.ppt</a> </li><li><em class="ppt"/></em><a target="_parent" href="https://m.bdocx.com/doc/30857916.html" title="创新思维导论专题三--类比创新法.ppt">创新思维导论专题三--类比创新法.ppt</a> </li><li><em class="ppt"/></em><a target="_parent" href="https://m.bdocx.com/doc/30857915.html" title="服装设计基础PPT课件.ppt">服装设计基础PPT课件.ppt</a> </li> </ul> </div> </div> <div class="container" style="padding:0px 0px 15px 0px; margin-top:20px; border:solid 1px #dceef8"> <div style=" font-size: 16px; background-color:#e5f0f7; margin-bottom:5px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px;">猜你喜欢</div> <div id="relatelist" style="padding-left:5px;"> <ul> <li><em class="doc"></em> <a href="https://m.bdocx.com/doc/2526820.html" target="_parent" title="工程进度款支付程序.doc">工程进度款支付程序.doc</a></li> <li><em class="ppt"></em> <a href="https://m.bdocx.com/doc/2526821.html" target="_parent" title="中国桥梁发展史_精品文档.ppt">中国桥梁发展史_精品文档.ppt</a></li> <li><em class="doc"></em> <a href="https://m.bdocx.com/doc/2526822.html" target="_parent" title="工程进度跟踪表.doc">工程进度跟踪表.doc</a></li> <li><em class="ppt"></em> <a href="https://m.bdocx.com/doc/2526823.html" target="_parent" title="中国物资再生协会技术服务委员会_精品文档.ppt">中国物资再生协会技术服务委员会_精品文档.ppt</a></li> <li><em class="doc"></em> <a href="https://m.bdocx.com/doc/2526824.html" target="_parent" title="工程造价专业毕业顶岗实习方案.doc">工程造价专业毕业顶岗实习方案.doc</a></li> <li><em class="ppt"></em> <a href="https://m.bdocx.com/doc/2526825.html" target="_parent" title="中国建筑史11-木构架做法_精品文档.ppt">中国建筑史11-木构架做法_精品文档.ppt</a></li> <li><em class="ppt"></em> <a href="https://m.bdocx.com/doc/2526826.html" target="_parent" title="中国电信在三网融合中的应对策略_精品文档.ppt">中国电信在三网融合中的应对策略_精品文档.ppt</a></li> <li><em class="ppt"></em> <a href="https://m.bdocx.com/doc/2526827.html" target="_parent" title="高端物业中心服务体系方案.ppt">高端物业中心服务体系方案.ppt</a></li> <li><em class="docx"></em> <a href="https://m.bdocx.com/doc/2526828.html" target="_parent" title="工程造价、管理合理化建议.docx">工程造价、管理合理化建议.docx</a></li> </ul> </div> </div> <div style=" font-size: 16px; background-color:#e5f0f7; margin-top:20px; font-weight: bold; text-indent:10px; line-height: 40px; height:40px; padding-bottom: 0px; margin-bottom:10px;"> 相关搜索</div> <div class="widget-box pt0" style="border: none; padding:0px 5px;"> <ul class="taglist--inline multi"> <li class="tagPopup"><a target="_parent" class="tag tagsearch" rel="nofollow" href="https://m.bdocx.com/search.html?q=Web">Web</a></li> <li class="tagPopup"><a target="_parent" class="tag tagsearch" rel="nofollow" href="https://m.bdocx.com/search.html?q=%e7%aa%97%e4%bd%93">窗体</a></li> <li class="tagPopup"><a target="_parent" class="tag tagsearch" rel="nofollow" href="https://m.bdocx.com/search.html?q=%e9%ab%98%e7%ba%a7">高级</a></li> <li class="tagPopup"><a target="_parent" class="tag tagsearch" rel="nofollow" href="https://m.bdocx.com/search.html?q=%e6%8e%a7%e4%bb%b6">控件</a></li> </ul> </div> <br /> <div > 当前位置:<a target="_parent" href="https://m.bdocx.com/">首页</a> > <a href="https://m.bdocx.com/booklist-00010.html">解决方案</a><span> > </span><a href="https://m.bdocx.com/booklist-0001000001.html">学习计划</a> </div> <br /> <div class="cssnone"> <iframe title="来源" src="https://m.bdocx.com/BookRead.aspx?id=nRsBXJsGHeM%3d&parto=0IhqlHSZuDs8N2NDYOkDrZIraR6a59V4ptJ%2fauUOdPzXsggTmXHQ%2bSr4judCB6TpQY1ukptSpkPhCfoYuet6f217Qjfb%2bwpTlO2KXMSqjSJl6PG4K0oEYTNWO0Nmh3RqQRJj%2fOgwlWh4wvch1DN85zX7t0vWw8jCWrq3eLbDNRA1AQC0rMVfyauFcOXV57fIlXo7JnagmgA72Jyhk0JrtTFNEMgCRkWe" frameborder="0" style="width: 0px; height: 0px"> </iframe> </div> <span id="LabelScript"></span> <script src="https://mstatic.bdocx.com/JS/bootstrap-collapse.js"></script> </form> <div class="siteInner_bg" style="margin-top: 40px; border: solid 0px red; margin-left: 0px; margin-right: 0px;"> <div class="siteInner"> <p style="text-align: center;">copyright@ 2008-2022 冰豆网网站版权所有</p><p style="text-align: center;">经营许可证编号:<a href="http://beian.miit.gov.cn/" target="_blank">鄂ICP备2022015515号-1</a></p><script>var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2e77bd3f6fe91b0e21d3f22267249ee3"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();</script><script>(function(){ var el = document.createElement("script"); el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?81476e42bf626128cf29544ee216a8ed7deb9487dce7ed62313212129c4244a219d1c501ebd3301f5e2290626f5b53d078c8250527fa0dfd9783a026ff3cf719"; el.id = "ttzz"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(el, s); })(window)</script> </div> </div> <div class="trnav clearfix" id="navcontent" style="display: none; background-color:#3a71b1; "> <div class="trlogoside" id="navlogo" style="display: none;"> <a href="https://m.bdocx.com/" title="冰豆网"><img src="https://www.bdocx.com/images/logo_bd.png" alt="冰豆网"></a> <div class="trnavclose" id="navclose"> <span></span> </div> </div> <div class="navcontainer"> <div class="row"> <ul class="nav navbar-nav trnavul headercontent" id="navigation" style="margin:20px 0 0px;"> <li><a target="_parent"href="https://m.bdocx.com/login.aspx">登录</a></li> <li><a target="_parent"href="https://m.bdocx.com/">首页 </a></li> <li><a target="_parent"href="https://m.bdocx.com/booklist-0.html">资源分类 </a></li> <li><a target="_parent"href="https://m.bdocx.com/UserManage/Recharge.aspx?f=0"><img src="https://m.bdocx.com/images/s.gif" alt="new" class="hottip1">升级会员 <img src="https://www.bdocx.com/FileUpload/Images/48520fea-bc98-41ae-b183-84689c7075c9.gif" alt="new" class="hottip"></a></li> <li><a target="_parent"href="https://m.bdocx.com/newslist.html">通知公告 </a></li> <li><a target="_parent"href="https://m.bdocx.com/h-0.html">帮助中心 </a></li> </ul> </div> </div> </div> <script type="text/javascript"> function stopPropagation(e) { var ev = e || window.event; if (ev.stopPropagation) { ev.stopPropagation(); } else if (window.event) { window.event.cancelBubble = true;//兼容IE } } $("#navmore").click(function (e) { $("#navcontent").show(); $("#navlogo").show(); stopPropagation(e); var navcontentwidth = $("#navcontent").width(); $('#navcontent').css({ 'right': '-' + navcontentwidth + 'px' }); $("#navcontent").show().animate({ "right": 0 }, 300); }); $(document).bind('click', function () { var navcontentwidth = $("#navcontent").width(); $("#navcontent").animate({ 'right': '-' + navcontentwidth + 'px' }, 300, function () { $("#navcontent").hide(); }); $("#navlogo").fadeOut(300); }); $("#navcontent").click(function (e) { stopPropagation(e); }); $("#navclose").click(function (e) { var navcontentwidth = $("#navcontent").width(); $("#navcontent").animate({ 'right': '-' + navcontentwidth + 'px' }, 300, function () { $("#navcontent").hide(); }); $("#navlogo").fadeOut(300); }); </script> <script> function BaseShare(title, desc, imgUrl) { var link = "https://m.bdocx.com/doc/4344514.html"; if (wx) { wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: 'wx4f717640abfd1120', // 必填,公众号的唯一标识 timestamp: '1721129742', // 必填,生成签名的时间戳 nonceStr: '6602294BE910B1E3C4571BD98C4D5484', // 必填,生成签名的随机串 signature: 'd79a6bcebb7b6084f9c106d579da93a87ab030d0',// 必填,签名,见附录1 jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline', 'updateAppMessageShareData', 'updateTimelineShareData', 'hideMenuItems'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 //openTagList: ["wx-open-launch-weapp"]//H5打开小程序 }); wx.ready(function () { //需在用户可能点击分享按钮前就先调用 wx.hideMenuItems({// 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3 menuList: ['menuItem:share:qq', 'menuItem:favorite', 'menuItem:share:QZone', 'menuItem:share:email', 'menuItem:originPage', 'menuItem:readMode', 'menuItem:delete', 'menuItem:editTag', 'menuItem:share:facebook', 'menuItem:share:weiboApp', 'menuItem:share:brand'] }); var shareData = { title: title, // 分享标题 desc: desc,//这里请特别注意是要去除html link: link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: imgUrl, // 分享图标 }; wx.updateAppMessageShareData(shareData);//1.4 分享到朋友 wx.updateTimelineShareData(shareData);//1.4分享到朋友圈 }); } } function BaseShare(title, desc, imgUrl, link) { if (link=="") link = "https://m.bdocx.com/doc/4344514.html"; if (wx) { wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: 'wx4f717640abfd1120', // 必填,公众号的唯一标识 timestamp: '1721129742', // 必填,生成签名的时间戳 nonceStr: '6602294BE910B1E3C4571BD98C4D5484', // 必填,生成签名的随机串 signature: 'd79a6bcebb7b6084f9c106d579da93a87ab030d0',// 必填,签名,见附录1 jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline', 'updateAppMessageShareData', 'updateTimelineShareData', 'hideMenuItems'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 //openTagList: ["wx-open-launch-weapp"]//H5打开小程序 }); wx.ready(function () { //需在用户可能点击分享按钮前就先调用 wx.hideMenuItems({// 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3 menuList: ['menuItem:share:qq', 'menuItem:favorite', 'menuItem:share:QZone', 'menuItem:share:email', 'menuItem:originPage', 'menuItem:readMode', 'menuItem:delete', 'menuItem:editTag', 'menuItem:share:facebook', 'menuItem:share:weiboApp', 'menuItem:share:brand'] }); var shareData = { title: title, // 分享标题 desc: desc,//这里请特别注意是要去除html link: link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: imgUrl, // 分享图标 }; wx.updateAppMessageShareData(shareData);//1.4 分享到朋友 wx.updateTimelineShareData(shareData);//1.4分享到朋友圈 }); } } </script> <script> $(document).ready(function () { var arr = $(".headercontent"); for (var i = 0; i < arr.length; i++) { (function (index) { var url = "https://m.bdocx.com/header.aspx"; $.get(url + "?t=" + (new Date()).valueOf(), function (d) { try { arr.eq(index).empty().html(d); } catch (e) { } try { arr.html(d); } catch (e) { } }); })(i); } }); </script> <script src="https://mstatic.bdocx.com/js/jquery.lazyload.js"></script> <script charset="utf-8"> $("img.lazys").lazyload({ threshold: 200, effect: "fadeIn" }); </script> </body> </html>