Los ObjectDataSource
soportan por default diferentes tipos de parámetros, como controles, cookies
, Form
, QueryString
, Profile
y Session
. Sin embargo si quieres pasar como parámetro el UserName
del usuario logueado no lo puedes hacer con ninguno de los tipos antes mencionados.
Para hacerlo debes utilizar el evento Selecting
del ObjectDataSource
.
Esto funciona así, aquí tenemos el ObjectDataSource
:
- <asp:ObjectDataSource
- ID="ODSEjemplo"
- runat="server"
- OldValuesParameterFormatString="original_{0}"
- SelectMethod="GetData"
- TypeName="BLLObtenerDatos">
- </asp:ObjectDataSource>
Fíjate como no hemos incluido ningún parámetro. Éste lo generamos en el code-behind:
- Protected Sub ODSEjemplo_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs) Handles ODSEjemplo.Selecting
- e.InputParameters("MiParametro") = User.Identity.Name
- End Sub
Nótese que en el ejemplo, el método GetData
recibe un sólo parámetro de tipo String
, mismo que coincide con el tipo de User.Identity.Name
Así de sencillo.