关于TreeView和listView的一些小心得

这两天做一些小东西,用到了TreeView和listVIiew,在用TreeView时,遇到了一个小问题,就是删除节点时,怎么清除所有的子节点,想了半天没想出办法,幸得同事指点一二,马上解决,在此简单说明,以恐将来再用。主要还是用递归算法。
/// <summary>
        
/// 递归删除子节点
        
/// </summary>
        
/// <param name="ID">删除的节点</param>

         public   void  deleteID( string  ID)
        
{
            DataView dv 
= Marker.Util.DataBaseUtil.GetDataView(Conn, "select * from Catalog where RefID='" + ID + "'");
            
if (dv.Table.Rows.Count == 0)
            
{
                Marker.Util.DataBaseUtil.ExeSQL(Conn, 
"delete from Catalog where id='" + ID + "'");
            }

            
else
            
{
                
foreach (DataRow dr in dv.Table.Rows)
                
{
                    
string id = dr["ID"].ToString();
                    deleteID(id);
                }

            }

            Marker.Util.DataBaseUtil.ExeSQL(Conn, 
"delete from Catalog where id='" + ID + "'");
        }

 另外,如果大家在使用树时,如果不想每次添加一些内容时,就重新调用数据库生成数的话,可以通过添加节点,删除节点来实现和数据库同步,但这个方法不是太好,如果同时多个人操作数据库,那这个方法就会有问题。

关于listView控件的selectedIndexChange事件,我记得很久以前用时就遇到过这个问题,没想到前两天又遇到了,这个事件是当更改选项时触发,但是你要记得,当你更改选项时,首先它要取消原项的选中状态,(这时就没有选中项了,这样你的事件处理程序就会出错,提示你没有选中项。),然后再选中另外一项。所以我们要在事件处理中加上一句判断。if (listView1.SelectedItems.Count != 0),这样,就OK了

 

另外,有一个问题到现在也没有解决,就是怎样当我重新加载树时,还保持树展开状态.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值