填充treeview控件,运用递归算法,在我自己机器上运行正常,并且调试也一切正常,把程序拷贝到其他机器上时运行出错提示:There is no row at position 1.不知道是什么原因,请高手们帮忙分析一下!代码如下: datatable dt1; private void fill_Treeview()
{
DataTable dt;
string ssql;
TreeNode rootNode; ssql = "SELECT * from Dept"; dt = clspublic.gettable(ssql); tvDept.Nodes.Clear(); rootNode = new TreeNode("根节点[00]");
tvDept.Nodes.Add(rootNode);
tvDept.SelectedNode = rootNode; dt1 = dt;
fill_Node(rootNode, "00"); tvDept.ExpandAll();
} private void fill_Node(TreeNode node,string no)
{
DataView dvtemp,dvtempparent;
dvtemp = dt1.DefaultView;
TreeNode tempnode = new TreeNode(); dvtemp.RowFilter = "ParentNo = '" + no.Trim() + "'"; if (dvtemp.Count <= 0)
return; if (dvtemp.Count >= 1)
{
foreach (DataRowView row in dvtemp)
{
tempnode = new TreeNode(row["Name"].ToString().Trim() +
"[" + row["No"].ToString().Trim() + "]"); node.Nodes.Add(tempnode); fill_Node(tempnode, row["No"].ToString().Trim());
}
}
} 在我自己机器上运行没点问题,到别人机器上运行只能填充根节点下面一个节点,然后报错:There is no row at position 1! 请大家帮帮忙啊!没分了,实在不好意思!
{
DataTable dt;
string ssql;
TreeNode rootNode; ssql = "SELECT * from Dept"; dt = clspublic.gettable(ssql); tvDept.Nodes.Clear(); rootNode = new TreeNode("根节点[00]");
tvDept.Nodes.Add(rootNode);
tvDept.SelectedNode = rootNode; dt1 = dt;
fill_Node(rootNode, "00"); tvDept.ExpandAll();
} private void fill_Node(TreeNode node,string no)
{
DataView dvtemp,dvtempparent;
dvtemp = dt1.DefaultView;
TreeNode tempnode = new TreeNode(); dvtemp.RowFilter = "ParentNo = '" + no.Trim() + "'"; if (dvtemp.Count <= 0)
return; if (dvtemp.Count >= 1)
{
foreach (DataRowView row in dvtemp)
{
tempnode = new TreeNode(row["Name"].ToString().Trim() +
"[" + row["No"].ToString().Trim() + "]"); node.Nodes.Add(tempnode); fill_Node(tempnode, row["No"].ToString().Trim());
}
}
} 在我自己机器上运行没点问题,到别人机器上运行只能填充根节点下面一个节点,然后报错:There is no row at position 1! 请大家帮帮忙啊!没分了,实在不好意思!
对方机器的.NET版本和你一样的吧?
递归调用在服务器的机子上循环的时候
datarowview就没值了报错了
在机子上却有值
.net版本是一样的