程序源码如下:
protected void AddChildNode(TreeNode parentNode, int level)
    {
        try
        {
            int _currentLevel = level + 1;
            DataView _dataView;
            _dataView = _dataSet.Tables[0].DefaultView;            if (_currentLevel <= 1)
            {
                _dataView.RowFilter = "Level = " + _currentLevel.ToString();                
            }
            else
            {
                _dataView.RowFilter = "Level = " + _currentLevel.ToString() + " AND UpSubjectID = '" + parentNode.Value + "'";
            }            foreach (DataRowView _dataRowView in _dataView)
            {
                TreeNode _childNode = new TreeNode();
                _childNode.Text = _dataRowView["SubjectName"].ToString();
                _childNode.Value = _dataRowView["SubjectID"].ToString();
                parentNode.ChildNodes.Add(_childNode);
                AddChildNode(_childNode, _currentLevel);
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
            ErrorManager.DoException(ex, this);
        }
    }环境:vs2005 + win2003 sp1问题如下:
此函数是一个递归函数,每次递归是都要使用一个dataView筛选条件
但我通过跟踪发现,dataView每次都是引用,即一个副本。
如第一次递归时,dataView的行数量为10,进入下层递归得到行数量5,但递归完毕返回上层时,dataView的行数量并不是10,而是5请各位朋友解答一下呢,到底是为什么?? 多谢。。