【问题标题】:How do I set up ObjectDataSource select parameters at runtime如何在运行时设置 ObjectDataSource 选择参数
【发布时间】:2008-10-24 20:35:56
【问题描述】:

我正在尝试在运行时向 objectDataSource 添加参数,如下所示:

        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;

这些参数应该在 objectDataSource 生命周期的什么时候添加(什么事件)?此外,一些值来自母版页属性(它在 包含 objectDataSource 的页面的 page_load 之后加载)。

【问题讨论】:

    标签: asp.net objectdatasource


    【解决方案1】:

    将它们添加到您尝试使用的操作的事件中。例如,如果这些参数是 SELECT 命令的一部分,则将它们添加到 Selecting 事件中,如果它们需要与 UPDATE 命令一起使用,则将它们添加到 Updating 事件中。

    ObjectDataSource 在执行每个操作之前引发一个事件,此时您可以插入参数(或验证/更改现有参数)。

    另外,不要尝试修改ODS本身的参数集合。您希望将参数添加到传递给事件处理程序的 ObjectDataSourceSelectingEventArgs。

    类似:

    e.InputParameters["CustomerID"] = customerId;
    e.InputParameters["database"] = dbName;
    

    【讨论】:

    • 谢谢,但参数集合似乎是只读的。有没有办法在该事件处理程序中设置值?
    • 是的,看我的编辑。您想修改事件 arg 的 inputParemeters 成员。
    • 太棒了,谢谢你的例子。它并不像我想象的那么直观。
    【解决方案2】:

    尽早添加;在PreInit 事件中。这是初始化的一部分,所以应该在那里完成。

    请参阅ASP.NET Page Life Cycle Overview 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多