Como faço para configurar o ObjectDataSource selecionar os parâmetros em tempo de execução
-
04-07-2019 - |
Pergunta
Eu estou tentando adicionar parâmetros a um ObjectDataSource em tempo de execução como este:
Parameter objCustomerParameter = new Parameter("CustomerID", DbType.String, customerID);
Parameter objGPDatabaseParameter = new Parameter("Database", DbType.String, gpDatabase);
//set up object data source parameters
objCustomer.SelectParameters["CustomerID"] = objCustomerParameter;
objCustomer.SelectParameters["Database"] = objGPDatabaseParameter;
Em que ponto do ciclo de vida objectdatasource devem esses parâmetros ser adicionado (o evento)? Além disso, alguns valores são provenientes de uma propriedade página mestra (que carrega após o page_load da página que contém o ObjectDataSource).
Solução
Adicionar-los para o evento para a operação que está tentando usar. Por exemplo, se esses parâmetros são parte do comando SELECT, em seguida, adicioná-los para o evento Seleção, se eles precisam ir com o comando UPDATE em seguida, adicioná-los no evento Atualização.
O ObjectDataSource gera um evento antes de executar cada operação, que é quando você pode inserir parâmetros (ou validar / alterar parâmetros existentes).
Além disso, não tentar modificar a coleção parâmetros do próprio ODS. Você deseja adicionar os seus parâmetros à ObjectDataSourceSelectingEventArgs que é passado para o manipulador de eventos.
Algo como:
e.InputParameters["CustomerID"] = customerId;
e.InputParameters["database"] = dbName;
Outras dicas
Adicione o mais cedo possível; no evento PreInit
. Isso faz parte de inicialização por isso deve ser feito lá.
Veja a ASP.NET página Ciclo de Vida Overview para obter mais informações.