近日在网上搜索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>
在网上不找不要紧,一找才知道 原来这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"/>
此方法影响整个程序的请求验证
一种是PostBack方式分页,
一种是通过Url来实现分页以及Url重写功能
二、AspNetPager支持各种数据绑定控件GridView、DataGrid、DataList、Repeater以及自定义的数据绑定控件的分页功能十分强大。
三、AspNetPager分页控件本身并不显示任何数据,而只显示分页导航元素,数据在页面上的显示方式与该控件无关,所以需要手写数据连接方法来配合,
四、结合TOP 。。。NOT IN 的通用存储过程分页方法使用AspNetPager十分实用
测试控件datalist aspnetpager 的分页方法示例 分页方法为
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>