我尝试根据列表添加树视图。我的范围超出范围。
for (int i = MyList.Count; i > 0 ; i--)
{
MyTree.Nodes.Add(MyList[i].GetP() + " " + MyList[i].GetSt());
MyTree.Nodes[i].Nodes.Add(MyList[i].GetSe());
MyTree.Nodes[i].Nodes[i].Nodes.Add(MyList[i].GetI());
}
能够使用硬编码值填充树视图。即,
MyTree.Nodes[0].Nodes[0].Nodes.Add(MyList[0].GetI());
请帮我解决此异常。
其他详细信息:
我试过
MyTree.Nodes[1].Nodes[1].Nodes.Add(MyList[1].GetI());
显示例外情况。
答案 0 :(得分:0)
您的循环似乎存在一些问题
int i = MyList.Count
将比最大索引大1
MyList
MyTree.Nodes[i]
尝试使用++
循环代替--
for (int i = 0; i < MyList.Count; i++)
{
MyTree.Nodes.Add(MyList[i].GetP() + " " + MyList[i].GetSt());
MyTree.Nodes[i].Nodes.Add(MyList[i].GetSe());
MyTree.Nodes[i].Nodes[i].Nodes.Add(MyList[i].GetI());
}
答案 1 :(得分:0)
我遇到了同样的问题,花了好几个小时后找到了一个更好,更简单的方法。
假设您有以下设置。
,代码在
下面protected void load_data()
{
string sql_text = "select * from category_master where parent_category_code = 0"; //only root categories
SqlConnection connection = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql_text;
cmd.Connection = connection;
connection.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string cat_code = rdr["category_code"].ToString();
string cat_name = rdr["category_name"].ToString();
TreeNode parent = new TreeNode();
parent.Value = cat_code;
parent.Text = cat_name;
tw.Nodes.Add(parent);
add_childs(parent, cat_code);
}
connection.Close();
}
protected void add_childs(TreeNode tn, string category_code)
{
string sql_text = "select * from category_master where parent_category_code = @category_code";
SqlConnection connection = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql_text;
cmd.Parameters.AddWithValue("@category_code", category_code);
cmd.Connection = connection;
connection.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string cat_code = rdr["category_code"].ToString();
string cat_name = rdr["category_name"].ToString();
TreeNode child = new TreeNode();
child.Value = cat_code;
child.Text = cat_name;
tn.ChildNodes.Add(child);
add_childs(child, cat_code); //calling the same function
}
connection.Close();
}
,输出