private void TreeNodeBind(DataView _DataView,string ParentId,TreeNode _TreeNode)
{
_DataView.RowFilter = " substring(exid,1,len('"+ParentId+"')) = '"+ParentId+"' and len(exid) = "+(ParentId.Length +3);
foreach(DataRowView DRV in _DataView)
{
if(DRV != null)
{
TreeNode temp = new TreeNode();
// temp.Text = DRV[1].ToString().Trim()+"("+DRV[2].ToString().Trim()+")"; temp.Text = DRV.Row[1].ToString().Trim();
temp.ID = DRV.Row[0].ToString().Trim();
_TreeNode.Nodes.Add(temp); TreeNodeBind(_DataView,temp.ID,temp);
}
}
}以上代码,我要是把注释的去掉就会报错,报错信息为
在位置 1 处没有任何行。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 在位置 1 处没有任何行。
temp.Text = DRV[1].ToString().Trim()+"("+DRV[2].ToString().Trim()+")"; temp.Text = DRV.Row[1].ToString().Trim();这两个写法到底有什么区别,忘高手指点 ,谢谢 !!!
{
_DataView.RowFilter = " substring(exid,1,len('"+ParentId+"')) = '"+ParentId+"' and len(exid) = "+(ParentId.Length +3);
foreach(DataRowView DRV in _DataView)
{
if(DRV != null)
{
TreeNode temp = new TreeNode();
// temp.Text = DRV[1].ToString().Trim()+"("+DRV[2].ToString().Trim()+")"; temp.Text = DRV.Row[1].ToString().Trim();
temp.ID = DRV.Row[0].ToString().Trim();
_TreeNode.Nodes.Add(temp); TreeNodeBind(_DataView,temp.ID,temp);
}
}
}以上代码,我要是把注释的去掉就会报错,报错信息为
在位置 1 处没有任何行。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 在位置 1 处没有任何行。
temp.Text = DRV[1].ToString().Trim()+"("+DRV[2].ToString().Trim()+")"; temp.Text = DRV.Row[1].ToString().Trim();这两个写法到底有什么区别,忘高手指点 ,谢谢 !!!
我也认为是没有区别的,这个地方只是一个循环,没有涉及到编辑操作的temp.Text = DRV[1].ToString().Trim()+"("+DRV[2].ToString().Trim()+")";temp.Text = DRV.Row[1].ToString().Trim();这两条语句,第一句报错,第二句就OK 。Why ??
你在使用它DataView前有没有对DataView或它的DataTable进行了编辑而没有调用EndEdit()?
我没有编辑的,我直接从数据库取出的数据,赋给的DataSet中的一个DataTable,然后使用TreeNodeBind 这个方法来循环,这个方法也就是循环创建一个TreeView的树