ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:213.13KB ,
资源ID:16677584      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16677584.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(37批量更新Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

37批量更新Word文档下载推荐.docx

1、图2: 创建一个名为SuppliersDataSource的ObjectDataSource使用SuppliersBLL类的GetSuppliers()方法配置ObjectDataSource(见图3)。象前面一章那样,我们将直接使用 BLL而不是通过ObjectDataSource来更新supplier信息。在UPDATE标签里选择None(见图4)。图 3: 使用GetSuppliers() 方法配置ObjectDataSource图 4: 设置UPDATE 标签为None完成向导后,Visual Studio会自动生成DataList的ItemTemplate来在Label里显示每个数据

2、字段。我们需要修改这个template让它提供编辑界面。ItemTemplate可以在设计器里通过DataList的智能标签上的Edit Templates或直接写声明语法来自定义。创建一个编辑界面,将supplier的name表现为文本,address,city和country表现为TextBox。完成这些后,你的声明代码应该和下面差不多:ASP.NET ItemTemplateh4/asp:Label/h4table border=0trtd class=SupplierPropertyLabelAddress:/tdSupplierPropertyValueTextBox ID=Addr

3、ess /trCity:CityCountry:Country/tablebr /ItemTemplateDataListObjectDataSource ID= OldValuesParameterFormatString=original_0 SelectMethod=GetSuppliers TypeName=SuppliersBLLObjectDataSource 注意:和前面一章一样,需要为DataList开启view state。在ItemTemplate里我使用了两个新的CSS类,SupplierPropertyLabel和SupplierPropertyValue。它们的风格设

4、置和ProductsPropertyLabel和ProductPropertyValue CSS类一样,并已经加入到Styles.css中。CSS .ProductPropertyLabel, .SupplierPropertyLabel font-weight: bold; text-align: right; .ProductPropertyValue, .SupplierPropertyValue padding-right: 35px;完成这些后浏览页面。如图5所示,每个DataList的item用文本显示supplier name,用TextBox显示address,city和cou

5、ntry。图 5: DataList里的每个Supplier都可编辑第二步: 增加“Update All” Button图5里显示的信息暂时还没提供Update按钮。完全可编辑的DataList应该只包含一个Update All按钮,而不是象前面那样,每个item包含一个button。当点击时,DataList里的所有记录将被更新。本章我们将添加两个button- 一个在页的上面,一个在下面(两个都提供相同的功能)。先在DataList上面添加一个ID为UpdateAll1的Button。然后在DataList下面添加ID为UpdataAll2的Button。两个Button的Text都设为。

6、最后为两个Button的Click事件都创建一个event handler。我们创建一个方法,“UpdateAllSupplierAddress”,然后在事件处理中调用它。(而不是在两个事件处理里复制相同的代码)C# protected void UpdateAll1_Click(object sender, EventArgs e) UpdateAllSupplierAddresses(); protected void UpdateAll2_Click(object sender, EventArgs e) private void UpdateAllSupplierAddresses()

7、 / TODO: Write code to update _all_ of the supplier addresses in the DataList图6是添加完button后的页面。图 6: 页面添加了两个“Update All” Button第三步: 更新所有的Suppliers的 Address 信息完成了将所有的item显示为可编辑的界面和添加了“Update All”button后,剩下的事就是写代码执行批量更新。我们需要便利DataList的item,调用SuppliersBLL类的UpdateSupplierAddress方法。可以通过DataList的Items prope

8、rty 来访问DataListItem集合。通过DataListItem的引用,我们可以从DataKeys集合里获取相关的SuppliserID,并引用ItemTemplate里的TextBox,见下面的代码: / Create an instance of the SuppliersBLL class SuppliersBLL suppliersAPI = new SuppliersBLL(); / Iterate through the DataLists items foreach (DataListItem item in Suppliers.Items) / Get the supp

9、lierID from the DataKeys collection int supplierID = Convert.ToInt32(Suppliers.DataKeysitem.ItemIndex); / Read in the user-entered values TextBox address = (TextBox)item.FindControl(); TextBox city = (TextBox)item.FindControl( TextBox country = (TextBox)item.FindControl( string addressValue = null,

10、cityValue = null, countryValue = null; if (address.Text.Trim().Length 0) addressValue = address.Text.Trim(); if (city.Text.Trim().Length cityValue = city.Text.Trim(); if (country.Text.Trim().Length countryValue = country.Text.Trim(); / Call the SuppliersBLL classs UpdateSupplierAddress method suppli

11、ersAPI.UpdateSupplierAddress (supplierID, addressValue, cityValue, countryValue);当用户点击一个button时,每个Supplier DataList里的DataListItem都执行UpdateAllSupplierAddress方法,并调用SuppliersBLL类的UpdateSupplierAddress方法,将相关的值传过去。如果address,city或country里不输入值,UpdateSupplierAddress会接收一个空值(不是空字符串),而相关的字段的结果会是一个database NULL

12、。你可以添加一个显示的状态Label,当批量更新完成后通过它来提供一些确认信息。只更新 Addresses被修改过的记录本章使用的批量更新法则为每个DataList里的supplier调用UpdateSupplierAddress方法,无论address信息是否被修改过。虽然这种盲目的更新一般情况下不会有什么性能问题,但是如果你有做数据库表的审计,那样将会导致很多多余的记录。每次用户点击button后,不管用户是否有修改,系统里都会为每个supplier产生一个一条新的审计记录。ADO.NET的DateTable和DataAdapter类被设计用来支持批量更新那些仅仅被修改,删除或新增的记录。

13、DataTable的每个row都有RowState property 来指明这个row是否是新增到DataTable或从它里面删除,修改,或没有改变。当DataTable刚产生时,所有的row都被标记为未修改的,修改了row的任何列后row会被标记为已修改的。在SuppliersBLL类里我们首先将supplier的记录读进SuppliersDataTable里然后设置Address,City和Country列的值来更新指定的supplier的信息,见以下代码: public bool UpdateSupplierAddress (int supplierID, string address,

14、 string city, string country) Northwind.SuppliersDataTable suppliers = Adapter.GetSupplierBySupplierID(supplierID); if (suppliers.Count = 0) / no matching record found, return false return false; else Northwind.SuppliersRow supplier = suppliers0; if (address = null) supplier.SetAddressNull(); suppli

15、er.Address = address; if (city = null) supplier.SetCityNull(); supplier.City = city; if (country = null) supplier.SetCountryNull(); supplier.Country = country; / Update the supplier Address-related information int rowsAffected = Adapter.Update(supplier); / Return true if precisely one row was update

16、d, / otherwise false return rowsAffected = 1;无论值是否有被修改,这段代码都将传入的address,city和country的值赋给SuppliersDataTable的SuppliersRow。这个修改将使SuppliersRow的RowState属性被标记为已修改的。当DAL的Update方法被调用时,它发现SupplierRow已经被修改了,因此向数据库发送UPDATE命令。然而想象一下,我们为这个方法添加的代码仅仅在和已经存在的值不一样时才将传入的address,city和country的值赋给SuppliersRow。在address,ci

17、ty和country没有修改的情况下,SupplierRow的RowState仍然标记为未改变。这样的结果是当DAL的Update方法被调用时,SuppliersRow没有被修改,因此不会调用数据库。使用以下的代码代替前面盲目的赋值: / Only assign the values to the SupplierRows column values if they differ if (address = null & !supplier.IsAddressNull() else if (address != null & supplier.IsAddressNull() | (!suppl

18、ier.IsAddressNull() & string.Compare(supplier.Address, address) != 0) if (city = null &supplier.IsCityNull() else if (city ! supplier.IsCityNull() |supplier.IsCityNull() & string.Compare(supplier.City, city) ! if (country = null &supplier.IsCountryNull() else if (country ! supplier.IsCountryNull() |

19、supplier.IsCountryNull() & string.Compare(supplier.Country, country) !增加了这些代码后,DAL的Update方法仅仅在更改过address相关的值的那些记录里才向数据库发送UPDATE命令。当然我们也可以追踪传入的字段和数据库数据是否有区别,如果没有,就不需要调用DAL的Update方法。这种方法在你使用直接的数据库命令时非常有效,因为直接的数据库命令不会检查SuppliersRow来决定是否需要调用数据库。每次UpdateSupplierAddress方法被调用时,都会调用一次数据库来获取需要更新的记录的信息。如果数据被修改,又要调用一次数据库来更新数据。这个流程可以通过创建一个重载的UpdateSupplierAddress方法来优化,这个方法接受一个EmployeesDataTable ,它包含BatchUpdate.aspx页的所有的修改。然后它会调用一次数据库来获取Suppliers表里的所有记录。在结果集里仅仅是被修改过的记录才能被更新。总结本章学习了如何创建一个完全可编辑的DataList。通过它用户可以快速的修改多个supplier的address信息。我们首先定义了编辑界面 address,city

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1