WEB开发网
开发学院软件开发C语言 C#发现之旅 - 高性能ASP.NET树状列表控件(下) 阅读

C#发现之旅 - 高性能ASP.NET树状列表控件(下)

 2010-09-30 21:03:02 来源:WEB开发网   
核心提示: TreeNodeStyleString 节点的CSS样式字符串,查看该页面的HTML代码,C#发现之旅 - 高性能ASP.NET树状列表控件(下)(5),可以看到这里使用了标签“SkyWebControl:SkyTreeViewControl”来定义一个树状列表控件,一些

TreeNodeStyleString 节点的CSS样式字符串。

查看该页面的HTML代码,可以看到这里使用了标签“SkyWebControl:SkyTreeViewControl”来定义一个树状列表控件。一些控件的属性值保存在HTML标签的属性中。

一般的。NET框架中的WEB控件在HTML代码中的前缀是“asp”,比如 “asp:label”,“asp:button”,“asp:TextBox”等。开发人员在开发自己的WEB控件也可以使用自己的HTMJL标签前缀,在树状列表控件的C#源代码中开头有一条指令

[assembly:System.Web.UI.TagPrefix("CS_Discovery" , "SkyWebControl")]

这条指令就指明自定义控件采用什么样的标签前缀。

查看这个页面的C#代码,可以看到代码还是不复杂的。主要包含了一个Page_Load函数,该函数的代码为

protected void Page_Load(object sender, System.EventArgs e)
{
    if( myTreeView.Nodes.Count == 0 )
    {
        // 连接数据库
        using( OleDbConnection conn = new OleDbConnection())
        {
            conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
                + this.Server.MapPath("SkyDemo.mdb");
            conn.Open();

            using( OleDbCommand cmd = conn.CreateCommand())
            {
                // 查询数据库,获得所有的客户名称、订单号和产品名称,
                // 向树状列表myTreeView 填充内容
                cmd.CommandText = @"
select
    trim(Customers.CompanyName) ,
    trim(orders.orderid & chr(32) & orders.shipname) ,
    trim(products.productname)
from 
    customers ,
    orders , 
    orderdetails , 
    products
where 
    customers.customerid = orders.customerid 
    and orders.orderid = orderdetails.orderid
    and orderdetails.productid = products.productid
order by 
    trim(Customers.CompanyName) , 
    orders.orderid,
    trim(products.productname)";
                OleDbDataReader reader = cmd.ExecuteReader();
                // 客户公司节点
                SkyTreeNode CompanyNode = null;
                // 客户订单节点
                SkyTreeNode OrderNode = null;
                while( reader.Read())
                {
                    // 读取客户公司名称
                    string cname = Convert.ToString( reader.GetValue( 0 ));
                    // 读取订单编号和订货人名称
                    string oname = Convert.ToString( reader.GetValue( 1 ));
                    // 读取产品名称
                    string pname = Convert.ToString( reader.GetValue( 2 ));
                    if( CompanyNode == null || cname != CompanyNode.Text )
                    {
                        // 创建新的客户公司节点并添加到控件myTreeView 中
                        OrderNode = null;
                        CompanyNode = new SkyTreeNode();
                        CompanyNode.Text = cname ;
                        CompanyNode.Icon = "customer.bmp";
                        myTreeView.Nodes.Add( CompanyNode );
                    }
                    if( OrderNode == null || oname != OrderNode.Text )
                    {
                        // 创建新的订单节点并添加到客户公司节点下
                        OrderNode = new SkyTreeNode();
                        OrderNode.Text = oname ;
                        OrderNode.Icon = "order.bmp";
                        CompanyNode.Nodes.Add( OrderNode );
                    }
                    // 创建新的货物节点并添加到订单节点下
                    SkyTreeNode ProductNode = new SkyTreeNode();
                    ProductNode.Text = pname ;
                    ProductNode.Icon = "product.bmp";
                    ProductNode.OnClick = "alert('" + pname + "')" ;
                    OrderNode.Nodes.Add( ProductNode );
                }//while
                reader.Close();// 树状列表myTreeView 填充完毕

                // 查询数据库获得所有的客户编号和客户名称,准备填充树状列表控件myTreeView2
                cmd.CommandText = "Select customerid , companyname from customers " 
                                +" order by companyname";
                reader = cmd.ExecuteReader();
                while( reader.Read())
                {
                    // 创建新的客户节点并添加到控件myTreeView2 下。
                    string NodeID = System.Guid.NewGuid().ToString();
                    SkyTreeNode node = new SkyTreeNode();
                    node.ID = NodeID ; 
                    node.Text = Convert.ToString( reader.GetValue( 1 ));
                    node.Icon = "customer.bmp";
                    // 设置节点的XMLSource属性准备客户端动态加载子节点
                    // 此处需要配合使用TreeViewNodeXml.aspx 页面。
                    node.XMLSource = "TreeViewNodeXml.aspx?KeyType=customerid&KeyValue=" 
                        + Convert.ToString( reader.GetValue( 0 ) ) ;
                    myTreeView2.Nodes.Add( node );
                }
                reader.Close();

            }//using
        }//using
    }
    this.lblInfo.Text = "本控件共有节点" + myTreeView.AllNodes.Count + " 个";
    this.lblInfo2.Text = "本控件初始化有" + myTreeView2.AllNodes.Count
        + " 个节点,能动态加载子节点";
}

上一页  1 2 3 4 5 6 7  下一页

Tags:发现 之旅 高性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接