Asp net objectdatasource onupdating

I tried all kinds of things to get hold of the business object but nothing seems to work. Well, I 'solved' it, although I still find it very unintuitive that ASP.NET does not make the Data Item available in the On Inserting, On Updating events. unit Price, int product ID) 同原来的Update Product一样,先通过输入的Product Id检测表中是否有要更新的数据,如果没有,返回false,表明更新失败。否则通过Table Adpater的Update()方法更新已存在的数据的Product Name和Unit Price字段。因为Products BLL改变了,我们建立一个简单的Grid View,打开Edit Insert Delete文件夹下的Data Modification Events.aspx,添加一个Grid View,和Object Data Source,配置Obejct Data Source的Select影射到Products BLL的Get Products,Update影射到Update Product重载的方法如Figure2所示,我们的例子只是说明如果编辑数据,不包括插入和删除数据,所以Object Data Source的Insert方法和Delete方法不影射到任何Products BLL的任何方法,在向导里在Insert和DELETE标签里选择(None)。 完成向导后,通过Grid View的智能标记把Enable Editing打勾。完成了建立数据源的向导,并把它绑定到Grid View,Visual Studio会为它们自动建立代码,在Source view可以看到Object Data Source的代码如下。 因为没有影射Object Data Source的Insert()和Delete()方法,所以这里没有Insert Parameter和Delete Parameters节。Update()方法影射到重载的Update Product方法,所以Update Parameters节仅有3个Parameter实例。 注意Object Datasource的Old Values Parameter Format String属性被声明为original,这是配置数据源时Visual Studio自动生成的。然而,我们业务逻辑方法不需要原来的Product Id之所以把它从Object Data Source的代码去掉。注意:如果你简单的在设计视图里的属性窗口去掉Old Values Paramer Format String属性值,在代码里这个属性依旧存在,只是被设为空字符串,应该直接在代码里删除它,或者在属性窗口把它设想为默认值。现在Object Data Source只有带着product’s name, price, 和ID 的Update Parameters,Visual Studio 也把product的字段添加成Grid View的Bound Field or Check Box Field。用户点Update button ,Grid Veiw枚举所有的非只读字段,把它们的用户输入赋给Object Data Source的Update Parameters集合相应的参数,如果没有相应的参数,Grid View会自己添加一个,因此如果Grid View包含product所有字段的Bound Fields and Check Box Fields,Object Data Source要使用所有的参数来调用重载的Update Product,尽管只需要3个参数。同样的Grid View中绑定的所用product非只读字段不符合重载的Update Product方法要求的输入参数,所以更新时会引发异常 为了确保Object Data Source调用Update Product方法时获得正确的参数,我们需要限制Grid View的可编辑字段只包括Productname 和Unit Price。我们可以删除其余字段,或者把其余字段设为只读。本指南让我们简单的移除除了Product Name和Unit Price外的Bound Fields,Grid View代码声明如下。 即使重载的Update Prodcut要求两个输入参数,我们只提供了连个,这是因为Product Id输入参数是作为主键传送的,因为Product Id是Grid View的Datakey Name属性。我们的Grid View,通过Update Product的重载函数,允许用户只编辑name和price。 Improving the Unit Price Formatting这个Grid View的例子,Unit Price字段是么有格式要求的。Price字段单位是金额这样的显示效果是不好的。应该显示为金额符号加上4位小数。在非编辑状态下修改格式,简单的把Unit Price Bound Fields的Data Format String属性设为且Html Encode属性设为false。 随着这次的修改,非编辑状态下的price显示为金额格式。编辑模式依旧没有显示为金额格式。Data Format String属性可以应用于编辑界面。把Boundfield的Applyformat In Edit Mode属性设为true。现在Unit Price在编辑状态下也显示为金额格式。然而,现在更新product,比如用户输入“.00”,会引发一个Format Exception异常。因为Grid View试图把用户输入传入Object Datasource的Update Parameters集合。输入的其实是一个字符串”.00”,程序需要把它转换为所需的decimal。为了补救这些,我们需要建立一个Grid View的Row Updating事件处理程序,在那里把用户输入转为正确的数据。Grid View’s Row Updating事件接受两个参数,一个对象是Grid View Up Date Event Args类型。它有一个New Values字典类型的属性。在这里就是用户提供给Object Data Source的Update Parameters集合的值。我们可以重写已经存在的Unit Price值。代码如下。protected void Grid View1_Row Updating(object sender, Grid View Update Event Args e) 如果用户输入的Unit Price值(比如“.00”),这个之会被Decimal. Step 2: Prohibiting NULL Unit Prices数据库里允许Produc表的Unit Price列允许输入控制。但是程序可能不允许这样,因此,如果用户输入一个空值,需要显示一个错信息来提示他。Grid View Update Event Args对象被传入Grid View的Rowupdateing事件处理函数。它有一个Cancel属性。如果设为true,就结束更新。现在让我们修改Row Updating事件处理函数。如果用户输入控制,就把这个对象Cancel设为true,并显示一个错误消息。添加一个Label 控件,命名为Must Provide Unit Price Message。如果用户有错误的输入,则显示出来“You must provide a price for the product”,再在Style.cs建立一个新的CSS类定义如下. Update, false)]public bool Update Product(string product Name, decimal? 选择显示表数据如Figure19显示的那样,这会列出Product表所有记录。我们新输入的记录Product ID, Product Name, and Unit Price被赋予NULL值某些情况下我们需要提供默认值代替NULL,例如:可能数据库会不允许空值等等。我们可以编程设定Details View的Input Parameters集合的值,这些操作可以在Details View的Item Inerting事件,或者Object Data Source的Inserting事件处理函数里做。前面我们已经看到用Data Web Control 提交之前的事件处理这一切,现在我们在Object Data Source的事件里处理它 Step 4: Assigning Values to the Category ID and Supplier ID Parameters在这个指南中假设我们的程序添加新的product时。它的Categroy ID和Supplier ID默认值为1从前面的指南我们知道Object Data Source提交数据时有一对事件要被触发。当Insert()被调用,Object Data Source首先触发Inserting事件,接着调用Insert()方法影射的方法,最后触发Inserted事件。Inserting事件处理函数为我们提供了最后的机会来修改输入参数或者中断处理。 注意:实际应用程序应该让用户可以详细指定category and supplier的值而不是简简单单的设为1,这里只是解释如何编程设定输入值。添加Object Data Source的Inserting事件,注意事件处理函数有两个参数,第二个是Object Data Source Method Event Args类型的对象。可以通过它访问输入参数集合。或者中断处理过程。protected void Object Data Source1_Inserting(object sender, Object Data Source Method Event Args e)Input Parameters属性包括了Object Data Source的Insert Parameters集合,简单使用e.See the Client-Side Events tutorial and the Events documentation.

Warning 最后设定这个Label的Css Class属性为Warning。具体显示如下图。默认的这个label应该是隐藏的。于是在Page_Load事件处理函数设定它的Visible属性为falseprotected void Page_Load(object sender, Event Args e) 如果用户更新Product但没有输入Unit Pice,需要中断这个处理。并显示错误信息。代码如下。protected void Grid View1_Row Updating(object sender, Grid View Update Event Args e) Figure 13: A User Cannot Leave Unit Price Blank目前为止,解释了如何在Grid View的Row Updating事件处理函数编程改变Object Data Source的Update Parameters参数。还有如何作废更新的处理过程。这些概念也适用于Detail View和Form View。也适用于它们的Insert和delete处理过程。这些就是Object Data Source级别的事件处理函数主要任务。这些事件在底层对象处理数据之前被触发。它提供最后的机会去修改输入参数和中断处理流程。这些事件处理函数都有一个Object Data Source Method Event Args类型的输入参数,这个参数有两个属性十分重要。• Cancel,如果设为true,则中止操作。• Input Parameters,它包括了所有的输入参数集合,Update Parameters 还有Delete Parameters,这些类型的对象依赖于何种事件被触发(Instering,Updaing,或者Deleting),会被传入相应的事件处理函数。 以上解释了在Object Data Source级别上参数如何处理。下面在页面上加一个Details View控件,可以让用户把新的product添加到数据库。为了和以上说明一致,这里只允许用户输入新的Productname,和Unit Price字段。默认下Details View 插入界面没有提供的字段会被把空值插入数据库,我们需要在Object Data Source的Inserting事件处理函数防止这些默认参数值。下面看看如何做。 Step 3: Providing an Interface to Add New Products从工具栏上拖一个Details View到Grid View上面,清除Height和Width属性,绑定到页面已有的Object Data Source,这会把Product的字段添加为Bound Field或者Check Box Field。为了能过让Details添加数据,需要在智能标记上选择Enable Inserting选项。然而,因为前面Object Data Source的insert()方法没有影射到任何Products BLL类的方法。现在选择Object Data Source职能标记配置数据源,进入向导,先把Products BLL绑定到Object Data Source,接着影射Object Data Source的Insert()方法到Products BLL的Add Product,因为Data Object Method Attribute属性,所以这些方法仍然是默认的方法。配置万Insert,接着依然把DELETE标签的下拉列表选为(None).通过这些改变,Object Data Source代码会包括Insert Parameter集合,如下所示 再次运行向导,会添加Old Values Parameter Format String属性,花一些时间去除它,或把它设为默认值。因为Object Data Source提供了插入数据的能力,Details View的智能标记现在可以让你选择Enable Inserting checkbox,选择它,现在Details View仅有两个Bound Fields(Product Name、Unit Price)和一个Command Field,代码如下Figure16显示了游览本页的效果。正如你看到的Details View列出了第一个product的名字(Chai),然而我们需要一个插入界面,可以让用户快速插入数据到数据库中。 为了让Details View显示为插入模式,我们需要设定Default Mode属性为Inserting,Details View会呈现为插入模式,如Figure17显示的那样。当用输入了Product的name和price(比如“Acme Water” 和1.99 ),点击Insert button,页面回送服务器一个插入数据的流程开始了,最后一个新的产品插入的数据库。Details View负责插入,Grid View在插入后自动绑定到新的数据。如Figure18显示的那样这里Grid View并没有显示所有的product字段(Category ID,Supplier ID, Quantity Per Unit 等等),你可以通过以下步骤看到这些值1.

I have a grid view in an update panel, similar to the ajax popup menu example in the ajax sample site. Name current Profile User Id = CType(User IDBy User Name(user Name String), Guid) End If If Not current Profile User Id = Guid. Result = Have To Offer By User ID(current Profile User Id) Else e. Updating Dim new Object As have To Offer Table = Direct Cast(e.

There are a few issues I am having with it that I believe can be traced to my use of a LINQ data source rather than an object data source, like in the example. Cancel = True End If End Sub Protected Sub have To Offer Linq Data Source_Updating(By Val sender As Object, By Val e As System. New Object, have To Offer Table) Dim skill IDInteger As Integer = new Object.skill ID Dim description String As String = new Object.description repo.update User Have To Offer(current Profile User Id, skill IDInteger, description String) End Sub set the gridview Edit Index to -1 and that'll take it out of edit mode.

I'm using Object Datasource in combination with a Formview. I have a business object property which I can't update through the normal binding since it's a custom enum type.

I managed to access the buinsess object through the Form View.

Search for asp net objectdatasource onupdating:

asp net objectdatasource onupdating-19asp net objectdatasource onupdating-35

Leave a Reply

Your email address will not be published. Required fields are marked *

One thought on “asp net objectdatasource onupdating”

  1. As humans societies have evolved from hunter-gatherers into civilized societies, there have been substantial changes in relations between men and women, with perhaps one of a few remaining biological constants being that both adult women and men must have sexual intercourse for human procreation to happen.