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 "没有报错,缺没有数据绑—ropdownlist3
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