[ASP.NET]如何在ObjectDataSource傳遞物件參數

小喵剛好最近用到這樣的方式,在使用ObjectDataSource的時候,會寫個Class並撰寫裡面的Function,然後讓這個Object與Function透過ObjectDataSource與某個控制項的新增、修改、刪除、查詢等事件結合。而如果Function的參數不再是單純的某個變數的某種型態,而是一個物件或者物件集合(List(Of MyObject))這樣的話,應該如何透過ObjectDataSource來傳遞物件參數呢?我們看下去…

緣起

小喵剛好最近用到這樣的方式,在使用ObjectDataSource的時候,會寫個Class並撰寫裡面的Function,然後讓這個Object與Function透過ObjectDataSource與某個控制項的新增、修改、刪除、查詢等事件結合。而如果Function的參數不再是單純的某個變數的某種型態,而是一個物件或者物件集合(List(Of MyObject))這樣的話,應該如何透過ObjectDataSource來傳遞物件參數呢?我們看下去…

 

一般設定參數寫在控制項的ing事件

以GirdView為例子,一般如果要Update的時候傳遞個參數進去,通常會寫在GridView的Updating事件中,例如以下:

Me.ObjectDataSource1.UpdateParameters("UsrID").DefaultValue=User.Identity.Name

以這樣的方式傳遞單一值來處理,但是,如果是要傳遞的是某個物件(例如:一個DataTable),該如何做呢?

 

物件參數寫在ObjectDataSource的ing事件中

這篇的重點就在這裡了,要透過ObjectDataSource傳遞物件給ObjectDataSource搭配的Function時,透過ObjectDataSource的ing事件來處理,例如Updating

Protected Sub odsRltPrg_Updating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs) Handles odsRltPrg.Updating
    Dim dtRlt As DataTable = CType(ViewState("dtRlt"), DataTable)
    If dtRlt Is Nothing Then
        dtRlt = New DataTable
    End If
    e.InputParameters("dtRlt") = dtRlt
End Sub

 

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6)