图9-4 为存储过程传递参数 图9-5 执行完成
使用SQL Server Management Studio能够快速的创建和使用存储过程,同样,能够通过编程的方法实现存储过程的创建、参数的传递以及执行。存储过程的优点就在于速度比较快,能够控制过程、减少网络通信和模块化,熟练的使用存储过程能够提高应用程序的性能和复用性。
9.6 ASP.NET数据库操作实例
在了解了数据源控件和数据绑定控件的功能和使用方法,并且了解了ADO.NET的基本知识后,就可以使用控件和ADO.NET来操作数据库。ASP.NET提供了强大的数据源控件和数据绑定控件,能够迅速的对数据库进行操作,同时,使用ADO.NET对数据进行操作,能够加深对ADO.NET的认识。
9.6.1 制作用户界面(UI)
使用数据控件和数据源控件显式数据,则需要为控件制作相应的用户界面,让数据控件对用户呈现的效果更好。首先,需要使用创建数据绑定控件GridView和数据源控件,并配置数据源控件,如图9-6所示。
显然,对于用户而言,该数据源控件和数据绑定控件显然很不友好,这里就需要对数据绑定控件的界面进行修改。通过配置数据绑定控件的相应格式可以修改数据绑定控件的外观,如图9-7所示。
图9-6 配置数据源控件和数据绑定控件 图9-7 编辑数据绑定控件界面
开发人员能够自定义数据绑定控件的样式,并且修改某些列的顺序,这里使用了自动套用格式,并将数据绑定控件的width属性设置为100%,这样编写宽度就能够适应浏览器的大小,从而随着浏览器
258
的大小而改变。数据绑定控件配置完成后,值得注意的是,需要勾选SQL语句的高级选项,让数据绑定控件支持编辑、删除和选择,如图9-8所示。
图9-8 SQL高级选项
配置SQL高级选项后,数据源控件就会自动生成INSERT、UPDATE、DELETE语句,示例代码如下所示。
ConnectionString=\ DeleteCommand=\
InsertCommand=\ SelectCommand=\
UpdateCommand=\
在完成用户界面的配置后,系统生成的HTML代码如下所示。
AutoGenerateColumns=\ BorderStyle=\ DataSourceID=\
259
开发人员可以编写以上HTML实现更多的效果,当确定用户界面编写完毕后,就可以为数据绑定控件选择操作了。
9.6.2 使用GridView显示、删除、修改数据
配置完成用户界面,则需要选择GridView控件的属性并配置GridView任务,如图9-9和图9-10所示。
图9-9 默认GridView任务 图9-10 选择GridView任务
GridView控件支持分页、排序、编辑、删除和选定内容等操作。在GridView控件中,首先必须勾选【分页】复选框,然后再配置PageSize属性才能够让GridView控件支持分页功能。在GridView控件属性中如果勾选了【分页】复选框而不配置PageSize属性,则默认按10条数据分页。勾选了以启用分页、启用编辑、启用删除和启用选定内容后,GridView控件的界面如图9-11所示。
因为在数据源控件配置的过程中,已经配置了支持编辑、删除和选择,所以在数据绑定控件中可以选择启用编辑,启用删除和选定内容等操作,并且系统默认支持更新、插入、删除等操作,运行后如图9-12所示。
图9-11 编辑数据绑定控件界面 图9-12 GridView控件显式
GridView控件支持编辑、删除和选择,当单击编辑时,能够对选择的行进行数据编辑,如图9-13所示。编辑完成后,单击更新按钮则可以执行更新操作,而无需手动编写UPDATE操作,如图9-14所示。
260
图9-13 编辑数据 图9-14 执行更新操作
当单击删除时,则会执行DELETE命令,而无需手动编写DELETE命令。GridView控件支持分页、排序、编辑、删除和选定内容,开发人员无需手动编写更新、删除、编辑、也无需手动编写分页,对GridView控件进行缓存设置能够提高应用程序性能,在对数据库的操作,编辑及更新中,GridView控件能够方便开发人员,简化代码。
9.6.3 使用DataList显示数据
DataList控件需要编辑HTML模板来显式数据,虽然在开发上,DataList控件比GridView更加复杂,但是DataList控件能够实现更多效果。相比之下,DataList控件比GridView控件更加灵活,能够进行复杂的事件编写和样式控制。选择【自动套用格式】复选框并将DataList控件的宽度设置为100%,编辑基本的用户界面,如图9-15所示。
通过编辑ItemTemplate能够实现自定义模板,而无需像GridView一样,以表格形式呈现,编辑后运行如图9-16所示。
图9-15 DataList控件显式数据 图9-16 编写ItemTemplate模板
DataList控件执行数据操作基本上同GridView一样,DataList控件与GridView相比只下,有着更灵活的模板方案,能够实现更多的显示效果。
9.6.4 DataList分页实现
DataList控件本身并不带分页实现,如果需要DataList能够实现分页效果,则需要通过代码实现DataList控件的分页。DataList控件分页需要增加若干标签(Label)控件来显式“上一页”,“下一页”等分页所需要的连接,示例代码如下所示。
261
上述代码创建了三个Label控件,这三个控件并无需初始化,这三个控件通过编程实现上一页,下一页的分页形式。如果需要执行分页,则需要编写cs页面代码,cs页面代码如下所示。
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = this.SqlDataSource1.Select(new DataSourceSelectArguments()); objPds.AllowPaging = true; //设置是否允许分页 objPds.PageSize = 3; //设置分页条目数 int CurPage; //设置当前页码 Label2.Visible = false; //隐藏标签 Label4.Visible = false;
上述代码初始化PagedDataSource对象,并将分页控件默认初始化属性Visible为false。其中PagedDataSource是封装分页相关属性的类。
if (Request.QueryString[\
//如果传递的页面不为空
{
CurPage = Convert.ToInt32(Request.QueryString[\//获取传递的参数 } else {
CurPage = 1;
//页面的值为1 //设置索引 //显式标签
}
objPds.CurrentPageIndex = CurPage - 1; Label2.Visible = true;
Label4.Visible = true;
Label3.Text = \首页\ //编写分页
Label2.Text = \下一页\ Label4.Text = \上一页\
上述代码通过传递的Page的值进行分页操作,如果传递的Page的值为不为空,则从数据源控件中读取相应的数据,并显示到数据绑定控件中。
if (CurPage == 1)
//如果只有一个页面 //隐藏标签
{
Label4.Visible = false;
}
if (objPds.IsLastPage) {
Label2.Visible = false; }
DataList1.DataSourceID = \ DataList1.DataSource = objPds; DataList1.DataBind();
//重新绑定数据
//编写DataList的数据源 //绑定数据源
上述代码通过PagedDataSource对象实现了分页效果,并且将分页条目数设置为3,当数据超过3条时,则会实现分页。运行后如图9-17和图9-18所示。
262