博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

初识FreeTextBox/AspNetPager

Posted on 2008-11-20 09:00  赢在自己  阅读(735)  评论(1编辑  收藏  举报
近日在网上搜索asp.net方面的控件 发现了2个非常好用的 FreeTextBox AspNetPager 
在网上不找不要紧,一找才知道 原来这2个都是程序员中使用非常广泛的控件, 
哎呀!真是闭门造车,孤陋寡闻,自己都觉得不好意思 
网络带给我们的一大好处就在资源的共享 
之前的一段时间,还苦恼于自动生成HTML页 和分页解决方案的代码烦琐性,在这些问题上总要浪费不少时间 
现在不用了 
这也给我的学习带来了不少启发,既然网上有那么多现成的东西,为什么还要苦思于那些原理呢! 
尽管有些不求甚解,但最重要的是,现在拿过来就能马上做出来,这个效率是重要的,你干出来活才能赚到钱~~ 
这2天通过研究这两个控件的用法和源代码,给我编程思想带来不少启发,体会到了面向对象和封装的重要性和实用性, 
呵呵,初学者也是有个好处,拿过来东西就学,脑袋里是空的,随便往里添,但是可不能添错的东西啊 ,那就麻烦了。 

发现网上关于这两个控件的用法有不少讲解,但不少都转的 有的写的不详细, 
下面是自己的试用体会: 
这两个用法  我写的应该是比较详细了 

FreeTextBox 1.6.3 使用说明 
1.直接使用的方法: 
  (1) 复制 bin 目录下的 FreeTextBox.dll 文件到你的 Web 应用程序目录中的 bin 目录; 
  (2) 复制 HelperScripts 目录下的三个文件到你的 Web 应用程序目录中或其子目录中,注意使用时要指定 HelperFilePath 属性; 
      假设把三个文件放于应用程序下的 helpfile 目录:this.FreeTextBox1.HelperFilesPath="helpfile"; 即指向了此目录。 
  (3) 复制 images 目录下的 ftb 目录到你的 Web 站点根目录下的 images 目录中。  此目录中包含界面的各种皮肤图片 
  (4) 在应用程序目录下建立images目录,此目录用于上传图片的图片库,必须有,否则插入图片将不可用 
  (5) 使用:在应用程序中建立相应的WEB窗体 在HTML代码页 
      页头添加<%@ Register TagPrefix="ftb" Namespace="FreeTextBoxControls" Assembly="FreeTextBox"  %> 引入控件标签 
      复制<FTB:FreeTextBox id="FreeTextBox1" runat="server" Width="500px" Height="400px" />到页面中需要的位置 
       
      也可以把控件添加到工具栏,通过直接拖拽来使用控件 
      在页面加载时设置属性 
private void Page_Load(object sender, System.EventArgs e) 

     this.FreeTextBox1.HelperFilesPath="ftb_helperfiles";  //设置辅助文件所在路径 
     this.FreeTextBox1.AutoC.AutoConfigure.EnableAll; //启用控件的所有功能 

  默认的目录结构如下: 
    + Web 根目录 \wwwroot\ 
       + images 目录 
          + ftb 目录 
       + 你的应用程序(虚拟目录) 
          + bin 目录 
             - FreeTextBox.dll 
          + images 目录(这个是你的“图片库”目录,上传的图片都在此) 
          + helpfile 目录 
             - ftb.colorpicker.aspx 
             - ftb.imagegallery.aspx 
             - ftb.inserttable.aspx 
          - test.aspx (测试) 
   (注:+ 表示目录,- 表示文件;上面 FreeTextBox.dll 只需要复制一个就行了;) 
-------------------------------------------------------------------- 
2.写入和读取数据库 
this.FreeTextBox1.Text这个就是FTB中你输入的文本的内容,这是带HTML标记的 
this.FreeTextBox1.HtmlStrippedText这个是将HTML标记去掉的文本,只有纯文本,其他信息被剔除 
建立数据表 test 
字段ID(自增)  title  content 
//读取信息 
private void Page_Load( object sender,System.EventArgs e) 

  if(!IsPostBack) 
  { 
    SqlC("server=(local);database=mm;uid=sa;pwd=123"); 
    SqlCommandmyCmd=newSqlCommand("select * from test where id = 2 ", myConn); 
    myConn.Open(); 
    SqlDataReadermyDr; 
    myDr=myCmd.ExecuteReader(); 
    myDr.Read(); 
    Response.Write(myDr["content"].ToString());   //直接从页面输出所有效果,就是直接生成html页   
         //内容中图片以路径的形式存入数据库,在存入和读取中都用路径来调用图片 
    myDr.Close(); 
    myConn.Close(); 
  } 


//存入数据 
private void Button1_Click(object sender,System.EventArgs e) 

  stirng title="这是标题"; 
  SqlConnection myConn = new SqlConnection("server=(local);database=mm;uid=sa;pwd=123"); 
  SqlCommandmy Cmd=new SqlCommand("insert into test( title,content ) values ('"+title+"','"+FreeTextBox1.Text+"')",myConn); 
  myConn.Open(); 
  myCmd.ExecuteNonQuery(); 
  myConn.Close(); 

[注]使用freetextbox插入图片和表格时,有一个请求验证的问题,提示有潜在危险,需要做如下修改:目的禁用请求验证 
方法一、在需要做数据存入的页面的HTML 代码页的 <%@ page .... %> 标签中添加属性 : validateRequest=false 
    如:<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="xiziban.WebForm1" validateRequest=false %> 
    此方法随需要时,随时添加只影响添加的窗体页 
方法二、web.config 
在system.web节加入: 
  <pages validateRequest="false"/> 
    此方法影响整个程序的请求验证 

AspNetPager使用指南一、AspNetPager支持两种方式分页: 
一种是PostBack方式分页, 
一种是通过Url来实现分页以及Url重写功能 
二、AspNetPager支持各种数据绑定控件GridView、DataGrid、DataList、Repeater以及自定义的数据绑定控件的分页功能十分强大。 
三、AspNetPager分页控件本身并不显示任何数据,而只显示分页导航元素,数据在页面上的显示方式与该控件无关,所以需要手写数据连接方法来配合, 
四、结合TOP 。。。NOT IN 的通用存储过程分页方法使用AspNetPager十分实用 

测试控件datalist aspnetpager 的分页方法示例   分页方法为 PostBack 方式 
1、 首先将AspNetPager.dll复制于应用程序下的bin目录,打开解决方案,引入dll文件 
2、 在工具栏中添加控件,这样可以支持拖拽使用 
3、  要使用AspNetPager 要为其设置最基本的属性 
使用 SqlServer Northwind数据库的 Products表 
protected Wuqi.Webdiyer.AspNetPager AspNetPager1; 
protected System.Web.UI.WebControls.Label Label1; 
protected System.Web.UI.WebControls.DataList DataList1; 
private void Page_Load(object sender, System.EventArgs e) 

       this.AspNetPager1.PageSize=10;     //设置每也显示的记录条数 
       if(!IsPostBack)                       //只在页面第一次加载时起作用 
       { 
              SqlDBManager db = new SqlDBManager(System.Configuration.ConfigurationSettings.AppSettings["SqlConnectionString"]); 
              AspNetPager1.RecordCount=db.CountPage("products");//获得要使用表的记录总数 
                                                                                             //db.CountItems自定义的方法 
              this.BindData();                                   
       } 

private void BindData() 

       SqlDBManager db= new SqlDBManager(System.Configuration.ConfigurationSettings.AppSettings["SqlConnectionString"].ToString(); 
       DataList1.DataSource=db.FenPage(this.AspNetPager1.PageSize,this.AspNetPager1.CurrentPageIndex,"productid","products","productid,productname,unitprice,unitsinstock",""); 
//自定义方法由 TOP not in 存储过程分页方法改编 
       this.DataList1.DataBind();                //控件数据绑定 
       this.Label1.Text="当前第"+this.AspNetPager1.CurrentPageIndex+"页 总"+this.AspNetPager1.PageCount+"页"; 

private void AspNetPager1_PageChanged(object sender, System.EventArgs e) 
{       //页索引改变方法 
    this.BindData(); 
} 

设计页效果 
<asp:DataList id="DataList1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 96px" runat="server"> 
       <HeaderTemplate> 
              <table border='1'> 
                     <tr> 
                            <td>产品ID</td> 
                            <td>产品名称</td> 
                            <td>产品数量</td> 
                            <td>产品单价</td> 
                     </tr> 
       </HeaderTemplate> 
       <FooterTemplate> 
              </table> 
</FooterTemplate> 
       <ItemTemplate> 
              <tr> 
                            <td><%# DataBinder.Eval(Container.DataItem,"Productid")%></td> 
                          <td><%# DataBinder.Eval(Container.DataItem,"productname")%></td> 
                            <td><%# DataBinder.Eval(Container.DataItem,"unitprice")%></td> 
                            <td><%# DataBinder.Eval(Container.DataItem,"unitsinstock")%></td> 
                     </tr> 
       </ItemTemplate> 
</asp:DataList> 
<webdiyer:AspNetPager id="AspNetPager1" style="Z-INDEX: 102; LEFT: 256px; POSITION: absolute; TOP: 40px" runat="server" Width="500px" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" Height="40px" NumericButt PagingButt ShowNavigati ShowInputBox="Always" TextAfterInputBox="页" TextBeforeInputBox="跳转到第" AlwaysShow="True"> 
</webdiyer:AspNetPager> 
<asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 120px; POSITION: absolute; TOP: 56px" runat="server">Label</asp:Label>