(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) {