无需向导的分页(SqldataSource控件)






3.91/5 (6投票s)
如何在 ASP.NET 中使用无向导分页。
引言
我一直引以为豪的一点是,我总是渴望学习新东西。Dave Kreskowiak 曾告诉我不要用向导来处理我的数据库工作。我非常理解他的原因。我认为向导可以用于原型开发。好了,让我告诉你在 ASP.NET 中遇到的事情。我遇到了“分页”,并在网上查找了关于这个主题的例子。所有的例子都在使用 SqldataSource
控件(向导)。我对这个控件并没有什么意见。我必须承认,微软在这个上面做得非常好。只是我反对使用向导。我属于那种对编写向导为我做的事情感兴趣的程序员。其他人可能会问:“既然轮子已经造好了,为什么还要自己 reinvent?”我的回答是,这能让我成为一个更好的程序员,更好地理解代码。现在,在这篇文章中,我们将遵循 N 层设计风格,编写我们自己的小型分页应用程序,而且不使用任何向导。
背景
我们需要做的第一件事是创建一个数据库并命名。我们将在 SQL 中进行操作。在这篇文章中,我们将使用 ASP.NET 2.0,并使用 C# 作为我们的语言。
开始 (SQL)
Create Database Vuyiswa
创建数据库后,使用该数据库并创建如下表:
create table memyself
(
ID int identity(100,01)Primary key not null,
Fname varchar(20) null,
Lname varchar(20) null,
Tel int null,
Adress varchar(35) null,
Car_model varchar(20) null,
Car_Type varchar(20) null
)
现在,让我们填充数据。请记住,我们想演示“分页”功能,这意味着我们可以执行 80 次 Insert
语句,以便为演示目的填充足够的数据。请像我下面一样编写 Insert
语句:
--Run the Insert to Fill the Table
insert into memyself
values('Dave','Mucky',054545774,'44 Drake Avenue, Pretoriawest 001','2009','HAMMER H3')
完成后,检查表中有多少条记录。
SELECT * FROM memyself
我有 80 条记录,这足以进行测试。
SQL 方面的最后一步是创建一个我们将要在应用程序中使用的存储过程,如下所示:
CREATE PROC PRCALLDATA
AS
SELECT * FROM DBO.memyself
完成后,让我们创建我们的应用程序。我使用的是 VS2005。打开你的 Visual Studio,创建一个新的网站或 Web 应用程序。我使用的是 C#,如果你愿意,也可以使用 VB.NET。正如我之前所说,我所有的例子,无论多么小,我都会以 N 层风格来演示。
创建 N 层
现在,你的应用程序只会包含一个包含“Default.aspx”的网站,如下所示:
现在,我们必须添加其他层:DAL 和 BLL。右键单击“解决方案资源管理器”,添加一个类项目并命名为“DAL”。再添加一个类项目并命名为“BLL”。之后,在你的 Web.Config 文件中添加一个连接字符串,如下所示:
<appSettings>
<add key ="F" value="User id =sa;Password=wow;
Server=VUYISWA\SQLEXPRESS;Database=VUYISWA"/>;
</appSettings>
完成后,你的解决方案资源管理器将如下所示:
现在似乎一切都准备好编写代码了。等等,我们忘了我们必须先从表示层开始。正如你所见,我已经将我的 default.aspx 重命名为 shop.aspx,因为我喜欢购物。在设计模式下打开你的 default.aspx,并添加一个 GridView
。在向导世界(哈利·波特)中,你可能会添加 SqldataSource
控件,但我们不会这样做。最后一件事是添加一个按钮,因为我们不希望在页面加载时显示我们的数据。在页面底部,你会看到类似这样的内容:
点击“源代码”。我们需要启用分页,你会看到类似这样的内容:
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
现在,将其更改为看起来像这样:
<asp:GridView ID="GridView1"
runat="server"
Height="293px"
Width="674px"
AllowPaging="True"
OnPageIndexChanging="GridView1_PageIndexChanging">
</asp:GridView>
粗体部分 AllowPaging
是允许你拥有分页功能的,下一部分 OnPageIndexChanging
将允许你跳转到另一页查看不同的数据。在此事件中,你将重新绑定页面。将你的按钮命名为“btnshowdata
”,并将其文本更改为“显示数据”。这不是必须的,你可以命名为任何你喜欢的名字。现在,你的页面应该看起来像这样:
底部是代表页码的数字。现在,我们希望它的工作方式是:当你点击按钮时,它应该从数据库中显示数据。
DAL
转到你的 DAL,并确保编写如下代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace DAL
{
public class DAL
{
String strcon = ConfigurationManager.AppSettings.Get("F");
SqlConnection con;
SqlCommand cmdselect;
//SqlCommand cmdupdate;
//SqlCommand cmdDelete;
SqlDataAdapter da;
public DataSet GetData()
{
con = new SqlConnection(strcon);
cmdselect = new SqlCommand();
cmdselect.CommandText = "dbo.PRCALLDATA";
cmdselect.CommandTimeout = 0;
cmdselect.CommandType = CommandType.StoredProcedure;
cmdselect.Connection = con;
da = new SqlDataAdapter();
da.SelectCommand = cmdselect;
DataSet Curriculat = new DataSet();
try
{
con.Open();
da.Fill(Curriculat);
}
catch (SqlException)
{
throw;
}
finally
{
con.Close();
}
return Curriculat;
}
}
}
返回设计视图,点击 GridView
,会弹出一个属性窗口。点击看起来像闪电的符号。
然后双击 GridView1_PageIndexChanging
事件,并确保它看起来像这样:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GetData();
}
BLL(业务逻辑层)
在 BLL 中,我们调用在 DAL 中创建的函数,并等待 PL(表示层)调用它。转到你的 BLL 项目并执行以下操作。添加对 DAL 项目的引用,然后转到你的表示层(网站)并添加对 BLL 的引用。请记住,PL 不应该直接访问 DAL;它应该通过 BLL 进行访问。
现在,确保你的 BLL 看起来像这样:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace BLL
{
public class BLL
{
public DataSet GetData()
{
DAL.DAL obj = new DAL.DAL();
DataSet Curriculat = new DataSet();
try
{
Curriculat = obj.GetData();
}
catch(SqlException)
{
throw;
}
return Curriculat;
}
}
}
再次回到 PL。
转到你的 PL(表示层),你的 ASPX 页面,然后双击。将代码后台代码设置为如下:
private void GetData()
{
DataSet Curriculat = new DataSet();
BLL.BLL obj = new BLL.BLL();
Curriculat = obj.GetData();
GridView1.DataSource = Curriculat;
GridView1.DataBind();
}
现在,这将把你的 DataSet
绑定到 DataGrid
。你现在只需要调用函数。在你的按钮 Click 事件中,像这样调用函数来绑定 GridView
:
protected void btnShowData_Click(object sender, EventArgs e)
{
GetData();
}
完成后,生成并按“F5”来欣赏你的作品。你应该会看到类似这样的内容:
点击底部的数字来导航到另一页。我不敢说我做得很好,我只是解释了如何在没有向导的情况下完成这项工作,以便我能够继续使用无向导的方式工作。
结论
在我的下一篇文章中,我们将更新、删除和插入 GridView
。在我之前的文章中,我们在 Windows 应用程序中完成了这些操作,现在我们将通过 Web 来实现。这篇文章献给 (www.ITS.co.za) 和 PostOffice 的 Kamogelo Mokgoro (www.SAPO.co.za),因为这是我加入他们(2008 年 12 月 10 日)以来的第一篇文章。谢谢。