【问题标题】:ASP.NET 2.0: Specifying an instance of an object for an ObjectDataSourceASP.NET 2.0:为 ObjectDataSource 指定对象的实例
【发布时间】:2008-12-29 18:06:35
【问题描述】:

我正在使用 ObjectDataSource 将数据绑定到 GridView;它工作正常,只是它总是创建一个新对象用作数据源。我可以很好地完成所有设置,但我不能使用现有对象的实例来指定它的“数据源”。是否有可能做到这一点?如果是这样,怎么做?

如果不可能,为什么?

编辑:这是发生的事情的要点(对象类型已更改):在第一页上,您正在编辑狗的属性。其中一个属性是“有小狗”,如果它是真的,下一页你指定这些小狗的名字。在我的情况下发生的事情是,这些小狗并没有与原来的狗联系在一起,而是与一只“新”狗联系在一起。 (暗示我的问题是“母狗”是巧合。;-))

【问题讨论】:

    标签: asp.net-2.0 pass-by-reference objectdatasource


    【解决方案1】:

    为 ObjectDataSource 上的 ObjectCreating 事件创建事件处理程序。

    您可以使用 ObjectDataSourceEventArgs 属性分配实例

    protected void ObjectDataSource1_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
    {
        e.ObjectInstance = myObject;
    }
    

    将此事件也连接到标记中

    <asp:ObjectDataSource OnObjectCreating="ObjectDataSource1_ObjectCreating" />
    

    【讨论】:

    • 也正是我想要的!谢谢!
    • 这需要明确添加为事件(例如在 page_load 期间)还是 asp 会处理?
    【解决方案2】:

    正如我刚刚在这里发现的in my own question,存储在应用程序缓存中的项目将作为参考传递给自己以供使用。您可以考虑将数据存储在那里(或者也可能存储在 Session 中)并以这种方式传递项目。

    【讨论】:

    • 我要使用的对象在Session中。你知道我怎样才能将该对象指定为我的 ObjectDataSource 的源吗?
    • 简单地将会话对象包装在直接转换语句周围以指定项目的格式。 VB.net 中类似于 MyObjectDataSource = DirectCast(Session("MyStoredData"), DataTable) 的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2020-04-13
    • 2013-04-19
    • 1970-01-01
    相关资源
    最近更新 更多