Web程序设计实验指导书1116 下载本文

(7)编写SqlDSInsert.aspx事件代码

按钮btnInsert被单击时执行的事件代码如下: protected void btnInsert_Click(object sender, EventArgs e) {

//执行sdsCategory中属性InsertQuery设置的SQL命令 sdsCategory.Insert(); }

按钮btnReturn被单击时执行的事件代码如下: protected void btnReturn_Click(object sender, EventArgs e) {

Response.Redirect(\ }

(8)设计SqlDSEdit.aspx

如图5-19所示,向SqlDSEdit.aspx页面输入“分类Id”、“分类名:”和“描述:”,添加3个TextBox控件、2个Button控件和1个SqldataSource控件。适当调整各控件的大小和位置。分别设置各控件的属性ID值为:txtCategoryId、txtName、txtDescn、btnUpdate、btnReturn和sdsCategory,再设置txtCategoryId的属性ReadOnly值为True,其他属性参考图5-19界面进行设置。

sdsCategory控件的其他属性设置可通过“配置数据源”向导和属性窗口完成。当配置Select语句时,单击“高级”按钮,选中选中“生成Insert、Update和Delete语句”。向导配置完后,如图5-20所示,在属性窗口设置属性UpdateQuery。

图5-19 设计界面(4)

图5-20 属性UpdateQuery设置界面

(9)编写SqlDSEdit.aspx事件代码 Web窗体首次载入时执行的代码如下:

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack) {

//获取SqlDataSource对象sdsTextBox执行查询后返回值 DataView DataSourceSelectArguments());

//将dv转换为DataTable对象 DataTable dt = dv.ToTable();

//获取dt中第一行“CategoryId”列的值,再赋值 txtCategoryId.Text = dt.Rows[0][\ txtName.Text = dt.Rows[0][\ txtDescn.Text = dt.Rows[0][\ } }

按钮btnUpdate被单击时执行的事件代码如下: protected void btnUpdate_Click(object sender, EventArgs e) {

//执行sdsTextBox中属性UpdateQuery设置的SQL命令

dv

=

(DataView)sdsTextBox.Select(new

sdsTextBox.Update(); }

按钮btnReturn被单击时执行的事件代码如下: protected void btnReturn_Click(object sender, EventArgs e) {

Response.Redirect(\ }

(10)设计LinqEdit.aspx

如图5-21所示,向LinqEdit.aspx页面输入“分类Id”、“分类名:”和“描述:”,添加3个TextBox控件、2个Button控件。适当调整各控件的大小和位置。LinqEdit.aspx中各控件的属性设置请参考SqlDSEdit.aspx进行设置。

图5-21 设计界面(5)

(11)添加MyPetShop.dbml

在App_Code文件夹中添加一个“LINQ to SQL类”MyPetShop.dbml,再从“服务器资源管理器”窗口将MyPetShop的各个表拖动到“对象关系设计器”窗口,然后,Visual Studio 2008将自动生成相应的数据类。

(12)编写LinqEdit.aspx事件代码

在所有事件代码外声明MyPetShopDataContext对象db ,使得该对象可在多个事件代码中使用,代码如下:

MyPetShopDataContext db = new MyPetShopDataContext(); Web窗体首次载入时执行的代码如下:

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack) {

var categories = from c in db.Category where int.Parse(Request.QueryString[\

select c; if (categories != null) {

foreach (Category r in categories) {

txtName.Text = r.Name; txtDescn.Text = r.Descn; } } } }

按钮btnUpdate被单击时执行的事件代码如下: protected void btnUpdate_Click(object sender, EventArgs e) {

var categories = from c in db.Category

where c.CategoryId == int.Parse(txtCategoryId.Text)

c.CategoryId

==

select c; if (categories != null) {

foreach (Category r in categories) {

r.Name = txtName.Text; r.Descn = txtDescn.Text; }

db.SubmitChanges(); } }

按钮btnReturn被单击时执行的事件代码如下: protected void btnReturn_Click(object sender, EventArgs e) {

Response.Redirect(\ }

(13)从浏览DataManage.aspx开始对数据管理网站进行测试。 2.利用LINQ 技术将Category表转换成XML文档Category.xml文档

新建一个Web窗体,切换到“设计”视图。在空白处双击,编写Web窗体载入时执行的代码如下:

protected void Page_Load(object sender, EventArgs e) {

//要建立的XML文件路径

string xmlFilePath = Server.MapPath(\ //建立XDocument对象doc XDocument doc = new XDocument (

new XDeclaration(\ new XComment(\分类\ new XElement(\ ); //保存到文件 doc.Save(xmlFilePath); //创建XElement对象

XElement els = XElement.Load(xmlFilePath);

MyPetShopDataContext db = new MyPetShopDataContext(); var results = from r in db.Category select r; foreach (Category r in results) {

//建立元素Product和子元素CategoryId、Name、Descn XElement el = new XElement(\ new XElement(\ new XElement(\

new XElement(\ //添加到XElement对象中 els.Add(el); }

//保存XElement对象 els.Save(xmlFilePath);

//重定向方式查看Category.xml文件内容 Response.Redirect(\ }

最后,浏览建立的Web窗体进行测试。 3.利用LINQ to XML管理XML文档

(1)新建网站

新建一个网站,添加Web窗体LinqXml.aspx、Web窗体LinqXmlInsert.aspx。其中LinqXml.aspx作为数据管理的导航页面;LinqXmlInsert.aspx用于插入元素。

(2)设计LinqXml.aspx

如图5-22所示,向LinqXml.aspx页面输入“分类名:”,添加1个TextBox控件、3个Button控件、1个Label控件。适当调整各控件的大小和位置。分别设置各控件的属性ID值为:txtName、btnQueryAll、btnQuery、btnInsert和lblMsg,其它属性参考图5-22界面进行设置。

图5-22 设计界面(6)

(3)编写LinqXml.aspx事件代码

按钮btnQueryAll被单击时执行的事件代码如下: protected void btnQueryAll_Click(object sender, EventArgs e) {

//输出JavaScript代码打开新窗口显示Category.xml

Response.Write(\ }

按钮btnQuery被单击时执行的事件代码如下: protected void btnQuery_Click(object sender, EventArgs e) {

//导入XML文件

string xmlFilePath = Server.MapPath(\ XElement els = XElement.Load(xmlFilePath); //查询元素

var elements = from el in els.Elements(\

where (string)el.Element(\ select el; if (elements.Count() == 0) {

lblMsg.Text = \没有满足条件的数据!\ } else {

foreach (XElement el in elements) {