TreeView控件的EnableViewState属性的问题

sansan123 sansan123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我是从数据库读取数据并且在treeview手动(不是绑定)添加节点的,每个节点都带有CheckBox,然后在一个按钮click事件里面遍历treeview的所有节点,并且从数据库中删除treeview中选中的记录,在数据库中成功删除(有条件,不能删除有子节点的节点)记录后在treeview中删除此节点,遍历算法如下:
private void DeleteNode(TreeNode parentNode)
{
int i = parentNode.Nodes.Count - 1;

while (i >= 0)
{
DeleteNode(parentNode.Nodes[i]);

if (parentNode.Nodes[i].Checked)
{
if ( ProductCatalog.DeleteCategory( Convert.ToInt32(parentNode.Nodes[i].ID) ) )
parentNode.Nodes.RemoveAt(i);
}
i--;
}

现假设treeview的EnableViewState属性设为true,treeview的结构为一个根节点root,root有两个子节点,A和B,第一次点击按钮执行删除操作成功,第二次执行失败,提示索引超出范围,如果将"if ( ProductCatalog.DeleteCategory( Convert.ToInt32(parentNode.Nodes[i].ID) ) )"去掉,也就是不从数据库删除记录,就执行多少次删除都没有错误。如果将EnableViewState设为false,第一次操作与前者结果相同,第二次也成功执行,唯一的问题就是treeview的状态不再是已经打开的状态,而是所有节点都关闭。郁闷了两天了,不知道是哪里的问题
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
sansan123
.NET社区 62,272 成员 668,968 内容