我用gridview的objectdatasource绑定到IList,
更新函数的参数就是这个Ilist
但执行更新命令的时候,出现如下错误:"无法创建接口的实例。"
具体代码如下:
<asp:ObjectDataSource ID="ObjectDataSource_test" runat="server" DataObjectTypeName="System.Collections.Generic.IList`1[[model.testInfo, hr.model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"
                InsertMethod="Insert" SelectMethod="GetTest" TypeName="BLL.test"
                UpdateMethod="Update">
            </asp:ObjectDataSource>

解决方案 »

  1.   

    怎么都这么牛啊,GridView用的满天飞!
    想LZ同志学习
      

  2.   

    更新函数的定义为:
    public void Update( IList<testInfo> tests )
      

  3.   

    Select是不是正常的?Select方法里是不是也返回一个IList<testInfo>?
      

  4.   

    对!
    select返回的是Ilist<testInfo>显示正常,编辑状态也正常就是更新的时候出现这种错误:无法创建接口的实例
      

  5.   

    System.Collections.Generic.IList`1[[model.testInfo, hr.model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
    这是一个接口,而不是一个实例。。想想DataGridView是怎么把更新后的数据传递给Update( xxxx )的呢?肯定是通过反射,首先生成一个xxx实例,然后把修改过的数据给XXX实例。但是你现在的xxx是System.Collections.Generic.IList`1[[model.testInfo, hr.model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
    是一个接口。。你想想一个接口能实例化么??不可能的。
    解决方法:把类型设置成能实例化的具体的类。
      

  6.   

    你肯定会问,为什么Select又可以呢。这是因为它虽然返回一个接口,但是在方法里,肯定返回的是一个实现了System.Collections.Generic.IList`1[[model.testInfo, hr.model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"的类。
      

  7.   

    有道理!敢问zhongkeruanjian(编程亮子)兄,把一组对象,就像 IList<T>,绑定到gridview或者dataList,
    又要把修改后的整个对象组,作为参数传给Update进行更新,就跟这个问题一样
    有什么很好的方法?
      

  8.   

    或者如何把gridview已修改后的值,转化为一个类似IList<t>的对象组
    gridview里有部分自定义的用户控件!