文章教程

12.4第三方控件

8/31/2020 9:19:23 PM 人评论 次浏览

12.4 第三方控件

在介绍数据绑定控件时,通过内置的PagedDataSource类实现分页功能。除了这种方法外,还可以使用其他的方法实现分页,例如第三方控件。

顾名思义,“第三方”就好比“第三者”,除了“我”和“你”之外的另外一方,“我”指用户本身,“你”指系统软件本身。另外一方相当于别的软件提供商。控件是用户可与之交互以输入或操作数据的对象,下面介绍常用的两个第三方控件。

12.4.1 分页控件

数据绑定控件实现数据分页时,可以通过内置的分页功能(如GridView),可以利用ASP.NET提供的DataPager控件,但是GridView和Repeater都无法直接使用DataPager分页。最常用的一种分页方法就是利用第三方控件AspNetPager,它将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取和显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方。

1.常用属性

AspNetPager控件提供了多个属性,如表12-5所示列举了常用属性。

表12-5 AspNetPager控件的常用属性

2.使用步骤

由于AspNetPager是第三方控件,因此在使用之前需要进行下载,然后将其拖动到工具箱中。步骤如下。

(1)在AspNetPager网站(http://www.webdiyer.com/Controls/AspNetPager/Downloads)下载最新版本的控件,下载完成后,解压缩包。

(2)在解压后的包中找到AspNetPager.dll文件,并将该文件引入到工具箱中。

(3)从工具箱中拖动此控件到页面的合适位置。

(4)设置与分页有关的内容。

【范例16】

将AspNetPager.dll文件引入到工具箱时的步骤如下。

(1)打开工具箱并找到最后一个选项卡(根据需要也可以选择其他选项卡)后单击右键,如图12-4所示。

图12-4 工具箱

(2)单击图12-4中的【选择项】命令,弹出如图12-5所示的对话框。

图12-5 【选择工具箱项】对话框

(3)单击图12-5中的【浏览】按钮,在弹出的对话框中选择AspNetPager.dll文件,选择后进行添加。添加完毕后,会在【常规】选项卡中显示一个AspNetPager控件,效果图不再显示。

3.AspNetPager控件的使用

将AspNetPager控件添加到工具箱之后就可以使用了,将其拖动到页面时会先注册该控件。有关代码如下。

    <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
    <webdiyer:AspNetPager ID="AspNetPager1" runat="server"></webdiyer: Asp NetPager>

【范例17】

从BookInfo数据库表中读取全部记录,并利用Repeater控件与AspNetPager控件将数据分页显示。步骤如下。

(1)在页面中添加Repeater控件,在该控件的项模板中绑定数据,代码不再显示。

(2)在后台页面的Load事件中添加代码,首次加载时设置AspNetPager控件的RecordCount属性,并调用Binding()方法绑定控件。代码如下。

    protected void Page_Load(object sender, EventArgs e) {
        if (! IsPostBack) {                  //页面首次加载
          AspNetPager1.RecordCount = Convert.ToInt32(SqlHelper. Execute
          Scalar(SqlHelper.connString, CommandType.Text, "SELECT COUNT(*)
          FROM BookInfo", null));            //总记录数
          Binding();
        }
    }

(3)Binding()方法从数据库表中读取指定的数据,并将数据绑定到Repeater控件。代码如下。

    public void Binding() {
        int page = AspNetPager1.PageSize;           //获取每页显示的条数
        int pageindex = (AspNetPager1.CurrentPageIndex - 1) * page;
        string sql = "SELECT TOP " + page + " * FROM BookInfo WHERE BookIsbn
        NOT IN (SEL " + pageindex + " BookIsbn FROM BookInfo) ";
        Repeater1.DataSource = SqlHelper.GetDataSet(SqlHelper.connString,
        CommandType.Text, sql, null);
        Repeater1.DataBind();
    }

(4)为AspNetPager控件添加PageChanged事件,在该事件中调用Binding()方法,代码不再显示。

(5)运行页面查看效果,分页效果如图12-6所示。

图12-6 AspNetPager控件的使用

12.4.2 验证码控件

ASP.NET中并不提供生成验证码的控件,如果要生成验证码,需要借助于第三方的验证码控件或者第三方类。SerialNumber控件是第三方验证控件,它包含两个常用方法。Create()方法用于自动生成验证码,CheckSN()方法返回一个布尔值,用于验证用户输入的验证码是否与自动生成的验证码一致。

SerialNumber控件的使用与AspNetPager一致,使用前需要先下载一个Webvalidates.dll文件,然后将其添加到工具箱中。

注意

将SerialNumber控件拖动到工具箱时,页面【设计】窗口显示类似于“创建控件时出错”的提示,可以将其忽略。另外,验证控件内容时不区分用户输入的大小写,但是会区分全角和半角。

【范例18】

直接使用SerialNumber控件生成验证码,并判断用户输入的验证码是否与生成的一致。步骤如下。

(1)在页面中添加多行两列的表格,模拟实现用户的登录。表格中包括登录名、密码、验证码和【登录】按钮,页面代码不再显示。

(2)将SerialNumber控件拖动到页面中,这时会自动注册该控件。有关代码如下。

    <%@ Register Assembly="WebValidates" Namespace="WebValidates" TagPrefix="cc1" %>
    <cc1:SerialNumber ID="SerialNumber1" runat="server"></cc1:SerialNumber>

(3)在后台页面添加代码,首次加载时调用SerialNumber控件的Create()方法生成验证码,具体代码不再显示。

(4)为按钮添加Click事件,在事件代码中调用CheckCode()方法判断用户输入的验证码是否正确,并弹出提示。代码如下。

    protected void btnLogin_Click(object sender, EventArgs e) {
        if (! CheckCode())     //如果验证码不正确,则显示提示信息
          Response.Write("<script>alert(’验证码出错’); </script>");
        else
          Response.Write("<script>alert(’验证码正确’); </script>");
    }

(5)在CheckCode()方法中调用CheckSN()方法判断用户输入的验证码,代码如下。

    protected bool CheckCode() {
        if (SerialNumber1.CheckSN(txtCode.Text.Trim()))
                                            //如果用户输入的验证码不正确
          return true;
        else {
          SerialNumber1.Create();          //重新生成验证码
          return false;
        }
    }

(6)运行页面查看效果,生成的验证码如图12-7所示。在图12-7中输入内容进行测试,效果不再显示。

图12-7 生成验证码效果

提示

使用SerialNumber控件生成验证码时的灵活度不高,安全性不高,并且不容易控制显示时的宽度和高度,这时还可以自定义验证码类生成验证码,并且对用户输入的全角和半角进行转换、对大小写进行转换等。

教程类别