字段:
当数据这样时,程序正常
cId cName cPreId
1 瓜 0
2 西瓜 1当数据这样时,程序出错
cId cName cPreId
1 瓜 0
2 菜 0上面“0”代码表示根代码如下:public void AddTree(int ParentId,Microsoft.Web.UI.WebControls.TreeNodeCollection pNode)
{
DataView dv=ds.Tables["movieClass"].DefaultView;
dv.RowFilter="[cPreId]="+ParentId; foreach(DataRowView row in dv)
{
TreeNode node=new TreeNode();
node.Text=row["cName"].ToString(); 报“在位置 1 处没有任何行。”错误,这个应该怎么解决
pNode.Add(node);
AddTree(int.Parse(row["cId"].ToString()),pNode[pNode.Count-1].Nodes);
}
}
当数据这样时,程序正常
cId cName cPreId
1 瓜 0
2 西瓜 1当数据这样时,程序出错
cId cName cPreId
1 瓜 0
2 菜 0上面“0”代码表示根代码如下:public void AddTree(int ParentId,Microsoft.Web.UI.WebControls.TreeNodeCollection pNode)
{
DataView dv=ds.Tables["movieClass"].DefaultView;
dv.RowFilter="[cPreId]="+ParentId; foreach(DataRowView row in dv)
{
TreeNode node=new TreeNode();
node.Text=row["cName"].ToString(); 报“在位置 1 处没有任何行。”错误,这个应该怎么解决
pNode.Add(node);
AddTree(int.Parse(row["cId"].ToString()),pNode[pNode.Count-1].Nodes);
}
}
DataView dv = new DataView(ds.Tables["tree_Ta"]);
dv.RowFilter = "[parentid] = " + parentId;因为这里是递归,所以要加DataSet ds = (DataSet)this.ViewState["ds"];
否则数据会丢失。所以就没有数据了。加下就ok了!
dv.RowFilter="";
递归就递归好了,也是处理完成之后才发到客户端的
不可能处理一次发送一次,所以不用使用ViewState来保存数据
不能解决问题但是我在递归函数内加了下面方法就可以了,为什么会这样,要重新建立DataSet对象才行吗?
//获取数据
public void getData()
{
DataBase db=new DataBase();
db.RunProc("showNode",out ds,"movieClass");
}
DataView dv=ds.Tables["movieClass"].DefaultView;
改成
DataView dv=new DataView(ds.Tables["movieClass"]);也能正常呢?是不是原句中dv对象只是对“movieClass”表视图的引用
icyer
的方法
本质是一样的
DataView dv=ds.Tables["movieClass"].DefaultView;
改成
DataView dv=new DataView(ds.Tables["movieClass"]);也能正常呢?是不是原句中dv对象只是对“movieClass”表视图的引用