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

RowFilter 条件过滤类型数据类型出错,好心人帮帮忙!解决思路

2012-03-06 
RowFilter 条件过滤类型数据类型出错,好心人帮帮忙!我想把多层栏目数据绑定到Dropdownlist,从网上找了下面

RowFilter 条件过滤类型数据类型出错,好心人帮帮忙!
我想把多层栏目数据绑定到   Dropdownlist,从网上找了下面的代码,在RowFilter   过滤的时候报错了,
语句:dv.RowFilter   =   "parentid= "+id.ToString();
错误:无法在   System.String   和   System.Int32   上执行“=”操作。  

代码如下,有人能指导一下吗?
栏目ID在两位数的时候,程序是正常的,55555

        protected   void   Page_Load(object   sender,   EventArgs   e)
        {

                DataTable   dt   =   GetData();
                BindData(dt,   "0 ");
        }

        private   void   BindData(DataTable   dt,   string   id)
        {
                DataView   dv   =   new   DataView(dt);

                //这里错,改为 "parentid=id "没有报错,缺没有数据绑定Dropdownlist3
                dv.RowFilter   =   "parentid= "+id.ToString();

                int   m   =   0;
                foreach   (DataRowView   drv   in   dv)
                {
                        m++;
                        string   blank   =   " ";
                        if   (id   !=   "0 ")
                        {
                                for   (int   i   =   0;   i   <   m;   i++)
                                {
                                        blank   +=   "|─ ";
                                }
                        }
                        ListItem   li   =   new   ListItem();
                        li.Text   =   blank   +   drv[ "id "].ToString()   +   drv[ "name "].ToString();
                        li.Value   =   drv[ "id "].ToString();
                        this.Dropdownlist3.Items.Add(li);
                        BindData(dt,   drv[ "id "].ToString());
                }
        }


        private   DataTable   GetData()
        {


                DataTable   dt;
                dt   =   new   DataTable();

                dt.Columns.Add( "id ");
                dt.Columns.Add( "parentid ");
                dt.Columns.Add( "name ");

                DataRow   dr;

                dr   =   dt.NewRow();
                dr[ "id "]   =   "20078381727741 ";
                dr[ "parentid "]   =   "0 ";
                dr[ "name "]   =   "农业新闻 ";
                dt.Rows.Add(dr);

                dr   =   dt.NewRow();
                dr[ "id "]   =   "20072036075795 ";
                dr[ "parentid "]   =   "0 ";
                dr[ "name "]   =   "致富故事 ";
                dt.Rows.Add(dr);

                dr   =   dt.NewRow();
                dr[ "id "]   =   "20075648480681 ";
                dr[ "parentid "]   =   "20078381727741 ";
                dr[ "name "]   =   "区内新闻 ";
                dt.Rows.Add(dr);

                dr   =   dt.NewRow();
                dr[ "id "]   =   "20071569095972 ";
                dr[ "parentid "]   =   "20078381727741 ";
                dr[ "name "]   =   "区外新闻 ";
                dt.Rows.Add(dr);

                dr   =   dt.NewRow();
                dr[ "id "]   =   "20074635030695 ";
                dr[ "parentid "]   =   "20071569095972 ";
                dr[ "name "]   =   "水果新闻 ";
                dt.Rows.Add(dr);
                return   dt;

        }


[解决办法]
dv.RowFilter = "parentid= ' " + id.ToString()+ " ' ";
改成这样就可以了,我把你代码调试了 ,没问题
------解决方案--------------------


dv.RowFilter = "parentid= "+id.ToString();
改成
dv.RowFilter = "parentid= ' "+id.ToString() " ';
断点跟踪了你就会发现把id.ToString()写在里面和外面的区别了
[解决办法]
一楼正解!应该是parentid=‘2’的形式,而你堆出的代码是parentid=2

热点排行