(转)dropdownlist分级显示(改)

     很不幸,最近所作的事情似乎只是找一些网上现成的东东,然后看懂加以改进而已.不过对于一个菜鸟也想不出很多编程的方法.也许这也是成长所必须经历的阶段吧,努力ing

    今天找到的是dropdownlist分级显示的一些东西,原帖同样难以辨别,只能默默感谢

原方法是采取递归的形式,水平有限不能从根本上解决性能问题,但对查询做了修正,只查询一次数据库即可.个人测试通过,可目前不显示父节点

     /// <summary>
    
/// dropdownlist分级显示
    
/// </summary>
    
/// <param name="objDDL">下拉框控件id</param>
    
/// <param name="parentID">父id</param>
    
/// <param name="selectedID">选中项</param>

     protected   void  DispDDL(DropDownList objDDL,  string  parentID,  string  selectedID)
    
{
        objDDL.Items.Clear();
        DataTable dt 
= new DataTable();
        
string sql = "select * from Article_class";
        dt 
= TreeViewOper.GetDS(sql).Tables[0];        
        
if (dt == null || dt.Rows.Count == 0)
        
{
            objDDL.Items.Add(
new ListItem("暂时无类别信息"""));
        }

        
else
        
{
            CreateLevel(objDDL, dt, parentID, selectedID);
        }

    }

    
/// <summary>
    
/// 生成下拉框项目
    
/// </summary>
    
/// <param name="DropDownList">下拉框控件id</param>
    
/// <param name="dt">数据表的datatable</param>
    
/// <param name="parentID">父id</param>
    
/// <param name="selectedID">选中项</param>

     protected   void  CreateLevel(DropDownList DropDownList, DataTable dt,  string  parentID,  string  selectedID)
    
{
        
string condition = " parent_ID=" + parentID + "";
        
string sort = " class_order asc";
        DataRow[] rows 
= dt.Select(condition, sort);
        
foreach (DataRow myDataRow in rows)
        
{
            
string AddToItemText = new String(' ', (myDataRow["class_path"].ToString().Split('|').Length - 1* 2+ "└ ";
            ListItem li 
= new ListItem(AddToItemText + myDataRow["class_name"].ToString(), myDataRow["class_id"].ToString());
            
if (li.Value == selectedID)
            
{
                li.Selected 
= true;
            }

            DropDownList.Items.Add(li);
            
this.CreateLevel(DropDownList,dt, myDataRow["class_id"].ToString(),selectedID);
        }

    }

调用:

DispDDL(DropDownList1, TextBox1.Text,  " 0 " );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值