首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

错误详细信息: System.InvalidOperationException: 数据源的类型无效。它必须是 IListSource、IEnumerable

2012-01-21 
异常详细信息: System.InvalidOperationException: 数据源的类型无效。它必须是 IListSource、IEnumerable

异常详细信息: System.InvalidOperationException: 数据源的类型无效。它必须是 IListSource、IEnumerable 或 IDataSource。
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.InvalidOperationException:   数据源的类型无效。它必须是   IListSource、IEnumerable   或   IDataSource。

源错误:  


行   459:                         string   Name   =   Request.Params[ "Name "];
行   460:                         //添加商品类别
行   461:                         ddlCate.DataSource   =   adminPub.spBindDdlCate(Id,Name);
行   462:
行   463:                         ddlCate.DataValueField   =   "Name ";
 

源文件:   c:\Inetpub\wwwroot\Web\WebShop\Adminkkk\AdminShoppingAdd.aspx.cs         行:   461  

源码:
            public   void   BindDdlCate()
                {
                        int   Id   =   Convert.ToInt32(Request.Params[ "Id "]);
                        string   Name   =   Request.Params[ "Name "];
                        //添加商品类别
                        ddlCate.DataSource   =   adminPub.spBindDdlCate(Id,Name);

                        ddlCate.DataValueField   =   "Name ";
                        ddlCate.DataTextField   =   "Name ";
                        ddlCate.DataBind();
                        //选择商品类别
                        ddlShopCate.DataSource   =   adminPub.spBindDdlCate(Id,Name);
                        ddlShopCate.DataTextField   =   "Name ";
                        ddlShopCate.DataValueField   =   "Name ";
                        ddlShopCate.DataBind();
                        //商品类别的数据来源
                        dgCate.DataSource   =   adminPub.spBindDdlCate(Id,Name);
                        dgCate.DataBind();


                }


逻辑层的代码为:
                          public   SqlDataAdapter   spBindDdlCate(int   id   ,string   Name)
                {

                        id   =   1;


                        Name   =   " ";
                        ConnOpen();
                        SqlDataAdapter1   =   new   SqlDataAdapter( "spBindDdlCate ",   SqlConnection1);
                        SqlDataAdapter1.SelectCommand.CommandType   =   CommandType.StoredProcedure;
                        SqlParameter   parm1   =   SqlDataAdapter1.SelectCommand.Parameters.Add( "@Id ",SqlDbType.Int);
                        parm1.Value   =   id;
                        SqlParameter   parm2   =   SqlDataAdapter1.SelectCommand.Parameters.Add( "@Name ",SqlDbType.NVarChar,50);
                        parm2.Value   =   Name;
                        DataSet1   =   new   DataSet();
                        SqlDataAdapter1.Fill(DataSet1);
                        return   SqlDataAdapter1;

                             
                               
                             
                     
                     
                     
                }

数据库为:
        ALTER   Procedure   spBindDdlCate
(
      @Id   int,
      @Name   nvarchar(50)  
)
as
Select   ID   ,Name   from   Categories   where   Name   =@Name   and   Id   =@Id


[解决办法]
SqlDataAdapter1.Fill(DataSet1);
return SqlDataAdapter1;
你怎么能绑定数据适配器呢
要绑定DataSet
[解决办法]
//逻辑层
public DataSet spBindDdlCate(int id ,string Name)
{
id = 1;
Name = " ";
ConnOpen();
SqlDataAdapter1 = new SqlDataAdapter( "spBindDdlCate ", SqlConnection1);
SqlDataAdapter1.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter parm1 = SqlDataAdapter1.SelectCommand.Parameters.Add( "@Id ",SqlDbType.Int);
parm1.Value = id;
SqlParameter parm2 = SqlDataAdapter1.SelectCommand.Parameters.Add( "@Name ",SqlDbType.NVarChar,50);
parm2.Value = Name;
DataSet1 = new DataSet();
SqlDataAdapter1.Fill(DataSet1);
return DataSet1;


}

public void BindDdlCate()
{
int Id = Convert.ToInt32(Request.Params[ "Id "]);
string Name = Request.Params[ "Name "];

DataSet ds = adminPub.spBindDdlCate(Id,Name);
//添加商品类别
ddlCate.DataSource = ds.Tables[0];
ddlCate.DataValueField = "Name ";
ddlCate.DataTextField = "Name ";
ddlCate.DataBind();
//选择商品类别
ddlShopCate.DataSource = ds.Tables[0];
ddlShopCate.DataTextField = "Name ";
ddlShopCate.DataValueField = "Name ";
ddlShopCate.DataBind();
//商品类别的数据来源
dgCate.DataSource = ds.Tables[0];
dgCate.DataBind();
}

热点排行