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.