使用ObjectdataSource 进行Update时?如果有更新数据有主外键关系的如何在参数中设置他的外键数据?
如:实体类 book 有的属性为 Category 是对应着Category这张表,更新方法为 Update(Book book)
这时book 本身的属性可以自动生成,但Category是为null的,
参数设置方法又只能是添加string的值?
如何可以让其book对象中的Cateogry有值,强调的是update(Book book)方法不加categoryid的参数,也就是不更写BLL层的Update方法?

解决方案 »

  1.   

    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OnUpdating="ObjectDataSource1_Selecting">
                <UpdateParameters>
                    <asp:Parameter Type="object" Name="book" />
                </UpdateParameters>
            </asp:ObjectDataSource>
    protected void ObjectDataSource1_Updating(object sender, ObjectDataSourceMethodEventArgs e)
        {
            if (e.InputParameters.Contains("book"))
            {
                //Book book = new Book();
                //给Category的属性赋值
                //e.InputParameters["book"] = book;
            }
        }
      

  2.   

    OnUpdating="ObjectDataSource1_Updating">
      

  3.   

    谢谢CutBug
    提供的解决思路!基本上算是成功了。
    只是在
    e.InputParameters["book"] = book;
    会有报OrderedDictionary 是只读的,无法修改。
    我是用
    ((Book)e.InputParameters["book"]).Category = Bll.GetcategoryById();
    来实现的,不算CutBug兄还有什么高招没有?
      

  4.   

    试试
    <asp:Parameter Type="object" Name="book" Direction="InputOutput" />