Objectdatasource onupdating event

6854933580_2c8b688306_z

Select Method="Get Contacts" Update Method="Update Contact" Conflict Detection="Compare All Values" Old Values Parameter Format String="original_" Data Object Type Name="Contact" On Updated="Object Data Source1_Updated" 四、其他 1 处理空值 数据控件支持各种处理空数据或缺少数据的方法。首先,Grid View、Form View 和 Details View 全都支持一个 Empty Data Text 或 Empty Data Template 属性,当数据源没有返回数据行时,可以使用该属性为控件指定一种呈现。只需设置 Empty Data Text 和 Empty Data Template 之一(当同时设置两者时,Empty Data Template 优先)。还可以在 Bound Field(以及派生字段类型)、Template Field 或数据源参数对象上指定一个 Convert Empty String To Null 属性,以指定在调用关联的数据源操作之前,应将从客户端发送的 String. " On Updating="Sql Data Source1_Updating" 参数名称的默认约定要求按照数据源 Select 操作所选择的字段对新值进行命名。通过指定 Old Values Parameter Format String 属性(例如“original_”),可以对来自 Keys 或 Old Values 的参数重命名,以将它们与 New Values 区别开来。通过处理相应的事件以便在执行数据源操作之前更改参数的值,您还可以自定义参数的名称。例如,如果 Sql Data Source 的更新操作与某个存储过程关联,该存储过程采用的参数名称与匹配默认约定的名称不同,可以在调用该存储过程之前在 Sql Data Source Updating 事件中修改参数名称。 void Sql Data Source1_Updating(Object sender, System.

Empty 值转换为空值。Object Data Source 还支持一个 Convert Null To Db Null 属性,当关联的方法需要 Db Null 参数而不是空值时,可将该属性设置为 true(Visual Studio 数据集中的 Table Adapter 类有此要求)。还可以在 Bound Field(以及派生字段类型)上指定一个 Null Display Text 属性,以便在数据源中返回的字段值为空值时,为该字段指定要显示的值。如果该值在编辑模式期间未更改,则它将在一个 Update 操作期间作为空值返回数据源。最后,还可以在数据源参数上指定一个 Default Value 属性,以便在传递的参数值为空值时,为参数指定一个默认值。这些属性将按顺序应用;例如如果同时设置 Convert Empty String To Null 和 Default Value,则 String. 处理参数: 如何处理各种数据控件事件以枚举通过事件参数传递的参数集合?注意,与不需要插入数据库的字段 相关联的Bound Field 的 Insert Visible 属性应该设置为 false,例如 Order ID 字段是基础数据库中的标识列,不应该将它传递给 Insert 操作(数据库在插入操作发生时自动递增此值)。另请注意,如果Order ID 字段被标记为 Data Key Names 中的主键,那么此字段的原始值保留在数据绑定控件所传递的 Keys 字典中。用户向输入控件中输入的值在 New Values 字典中传递,不过标记为 Read Only=false 的字段除外。非键字段的原始值也由数据绑定控件保留在一个 Old Values 字典中,以用于传递给数据源。这些参数值由 Sql Data Source 按照 New Values、Keys 和 Old Values 的顺序追加到命令上,不过在 Conflict Detection 设置为 Overwrite Changes 时,数据源默认不追加 Old Values。有关数据源如何使用 Old Values 的更多信息,请参考Quick Start中的“使用冲突检测”一节。 通过按照自己喜欢的顺序将静态 Parameter 对象添加到数据源操作的参数集合,可以更改 Sql Data Source 向命令追加参数的顺序。Sql Data Source 自动根据这些 Parameter 对象的顺序对数据绑定控件传递的参数重新排序。这在数据源的 Provider Name 属性设置为 System. Ole Db 时很有用,因为此设置不支持命名的参数,所以向命令追加参数的顺序必须与命令中的匿名参数占位符(“? ”)的顺序相匹配。当使用命名的参数时,参数的顺序无关紧要。可以指定 Parameter 对象的 Type 属性,以便在执行命令或方法之前,强制将数据绑定控件传递的值转换为适当的数据类型。同样,可以设置 Parameter 的 Size 属性,以指示 Sql Data Source 命令中的 Db Parameter 的 Size (这是输入/输出、输出和返回值参数所需要的)。 " runat="server" Select Command="SELECT TOP 10 [Order ID], [Order Date], [Ship Country] FROM [Orders]" Update Command="UPDATE [Orders] SET [Order Date] = ?

Please join our friendly community by clicking the button below - it only takes a few seconds and is totally free.

Return Value Gets the return value that is returned by the business object method, if any, as an object.I tried to handle the onupdating event and changing the e. Update the web.config file with the correct connection string to connect to your newly created data source.** Object Data Source Hi KPMT-Technician, Sorry but didnt understand what you mean by "could you run a backup of your data source and post it". In case some constants are missing then the same can by created by you. Input Parameters["objcity"] to include the country name in the City Entity, but getting the error Input Parameters is a readonly field. With minimal change in code and without handling the On Updating event I can pass the Country Name from the ddl Country control. Do you want me to send you the table structure and all the data. If the constant name is City ID then public const string City ID = "City ID"; If the Constant name is City IDAt, here the 'At' as suffix indicate a parameter then public const string City IDAt = "@City ID"; Notice the difference in value of the City ID and City IDAt. 一、Render UI 1 Grid View Grid View 控件用来在表中显示数据源的值。每列表示一个字段,而每行表示一条记录。Grid View 控件支持下面的功能: * 绑定至数据源控件,如 Sql Data Source。 * 内置排序功能。 * 内置更新和删除功能。 * 内置分页功能。 * 内置行选择功能。 * 以编程方式访问 Grid View 对象模型以动态设置属性、处理事件等。 * 多个键字段。 * 用于超链接列的多个数据字段。 * 可通过主题和样式进行自定义的外观。 实验一: 将Details View和Grid View放置在一个页面。然后在Details View的Sql Data Source中的查询参数设置为从Grid View传递过来。 预期结果:当Grid View中的选择不同的行时,作为Data Key Names属性中的第一个字段au_id应该作为参数传递给Details View的Sql Data Source,Details View根据数据源Render。 现象:当Grid View中的选择不同的行时,Details View控件没有展现数据。 分析: 首先怀疑是Details View的属性没有设置正确,于是将其数据源的查询参数设置默认值,结果能展现。说明Details View和其Sql Data Source的属性设置正确。 然后怀疑是Grid View选择行时,其Selected Value为空。于是在其Selected Index Changing事件和 Selected Index Changed中进行调试,发现第一次选择时Grid View的Selected Index Changing事件中 Selected Value确实为Null,而Selected Index Changed事件中Selected Value值为预期值。而第二次以及以后的选择时两个事件中Selected Value的值都为预期值。 那么Grid View的Selected Value为什么是Null呢?我查看一下Grid View的属性,Enable View State设置为false,于是改成True,再试,还是不行。 经过长时间的尝试,发现在如下两种情况下程序结果是对的: 一:先设置Details View使用的Sql Data Source中查询参数的默认值,这样Detail View会显示出来,然后将其切换到Edit模式,发现其各字段的值确实是Grid View选中行的值,然后再点击Cancel放弃修改。则Detail View能够正确响应Grid View的选择操作。再调试代码,发现Grid View的Selected Index Changing事件中Selected Value值不再为空,而是预期值。 二:发现一个更奇特的现象,在Selected Index Changing中设置断点,发现程序运行进来,然后什么都不做,跳出事件处理(如下) protected void Grid View1_Selected Index Changing(object sender, Grid View Select Event Args e) ... Eval 只是一个具有三个参数的方法:数据项的命名容器、数据字段名称和格式字符串。在诸如 Form View、Grid View、Details View、Data List 或 Repeater 这样的模板化控件中,命名容器始终为 Container. 新建Details View DAL.aspx,添加Object Data Source,配置数据源和相关方法(碰到Object Data Source看不见类文件,重启VS2005可能可以解决问题)。 结果:可以正确显示,但是更新时出错,错误信息为: Object Data Source 'Object Data Source2' could not find a non-generic method 'Update Author' that has parameters: au_id, au_lname, au_fname, state, phone, address, city, zip, contract.程序结果也是对的,但是如果不设置断点,直接运行,则结果不对。 又经过很长时间的尝试,没有办法了,只好找同事帮忙。刚开始他也觉得离奇。先跟踪事件发生的顺序,接着发现了一个更离奇的现象:在 Selected Index Changing事件中设置断点时我添加了对Grid View. Selected Value的监视。虽然在事件响应代码中我什么都没有做,但是这个watch好像起了作用。因为他把我添加的这个监视去掉后,错误现象又重现了。而添加这个监视,或者在代码里这样写 string s = Grid View1. To String(); 才能正常运行。 最后,同事让我在工程里新建一个页面,Sample Code拷到这个页面,然后运行。以确定不是我的环境有错误。然后把Samlpe Code和我的代码做了对比。把一些不一样的属性去掉。当改到Grid View的Sql Data Source的Enable View Sate属性时,“奇迹”出现了。 Sample Code的该属性设置为True,而我的是false,我改成True后,程序正常运行。 这时候再去测试Selected Value的值,发现第一次选择时,在Selected Index Changing事件中Selected Value仍然为null,和错误时的现象没有什么区别。 错误的源头总算找到了,但是Sql Data Source的Enable View State究竟做了什么呢?Grid View的Selected Value和Sql Data Source有关吗? 实验二:分页排序 虽然 Grid View、Details View 和 Form View 提供页导航 UI 的默认呈现,但是也可以通过设置 Pager Template 属性自定义页导航的呈现。在该模板中,您可以放置 Command Name 属性设置为 Page 并且 Command Argument 属性设置为 First、Prev、 Next、Last 或 这将启用默认的分页事件。如果需要在分页中控制逻辑,例如:如果在Text Box中输入页码,然后点击Go按钮,则不仅需要客户端验证输入的范围,还需要在翻页时验证页码的合理性,所以在Page Index Changing事件中添加如下代码: protected void gv Report For Order_Page Index Changing(object sender, Grid View Page Event Args e) ... NET 页框架提供一个静态方法,计算后期绑定的数据绑定表达式并可选择将结果格式化为字符串。Data Binder. Eval 的便利之处在于它消除了开发人员为了将值强制为所需数据类型所必须做的许多显式强制转换。当数据绑定控件在模板化的列表中时,它特别有用,因为通常数据行和数据字段的类型都必须转换。 请考虑下面的示例,其中一个整数将被显示为货币字符串。使用标准的 ASP. NET 数据绑定语法,必须先强制转换数据行的类型才能检索数据字段 Integer Value。接着,该值作为参数被传递给 String. 分析: 从异常信息来看,应该是更新时调用的方法签名和Author DB中的Update Author方法的签名不一致。也就是说,虽然给Object Data Source指定了更新方法,但是它调用的时候传参是按照Select出来的列构造的。 联想在Grid View对数据的绑定,猜想在Details View中设置绑定列的 Read Only属性,应该可以使不需要更改的列不被生成参数(这也更符合实际中的需要,不可编辑的就不需要更新)。这时发现au_id也不会被作为参数传递。于是设置Data Key Names="au_id",这样Object Data Source会根据 Old Values Parameter Format String="original_“来生成一个参数original_au_id,这样调整 Update Author中的参数即可。 结果: 实现了部分数据可以编辑,部分数据只读。 Sql Data Source和Object Data Source的比较 Object Data Source Status Event Args支持的属性: Affected Rows Gets or sets the number of rows that are affected by the data operation./**//// public void Grid View Paging Handler(object sender, Grid View Page Event Args e, Grid View gv) ... Exception Gets a wrapper for any exceptions that are thrown by the method that is called by the Object Data Source control during a data operation.

You must have an account to comment. Please register or login here!