日期:2014-05-20  浏览次数:20899 次

急!急!急!web服务的问题
我做了一个web服务
代码如下:
web服务中Servicearea类中
[WebMethod(Description   =   ( "获取省份或直辖市中的市 "))]
        public   DataTable   getcity(string   pid)
        {
                OPDB   ob   =   new   OPDB();
                string   sql   =   "select   id,shi,sheng   from   city   where   sheng= ' "+pid+ " ' ";
                return   ob.ds(sql,   "WebSvsDbCon ");
        }
自定义类中的ds为public   DataTable   ds(string   que,   string   cs)
                {//返回一个装载了SQL制定留言的数据表,
                        open(cs);
                        SqlDataAdapter   sda   =   new   SqlDataAdapter();
                        sda.SelectCommand   =   new   SqlCommand(que,   SqlConn);
                        DataSet   ds   =   new   DataSet();
                        sda.Fill(ds,   "thc ");
                        return   ds.Tables[ "thc "];
                }
引用web的名称为aa:
                aa.Servicearea   ss   =   new   Servicearea();
                DropDownList1.DataSource   =   ss.getprovice();
                DropDownList1.DataTextField   =   "sheng ";
                DropDownList1.DataValueField   =   "id ";
                DropDownList1.DataBind();
错误信息:
数据源的类型无效。它必须是   IListSource、IEnumerable   或   IDataSource。  


------解决方案--------------------
如果你用的是vs03的话,建议你用DataSet作为返回类型
------解决方案--------------------
public DataTable getcity(string pid)

应该返回DataSet吧,
用DropDownList1.DataMember = "表名 "
你把他改一下,要是怕网络传得慢
DropDownList1.DataMember = ss.getprovice();
再不行,就在传回后,重新做一个DATASET试试
再不行,没则了

问题肯定出在你的绑定设置那

------解决方案--------------------
再补充一句,2003里面的DATATABLE没实现做数据源的接口,好像
但2005里,我记得在绑定gridview的时候,DATASOURCE又必须指定到DATATABLE一级