最近做了一个图书馆管理系统,其中要实现中图法分类号查询,因为初学asp ,感觉还有点难度,

第一步:数据库文件

第二步 向界面中拖进TreeView控件

第三步添加事件

下面是cs文件代码

 //TreeView绑定数据库
public void BindDataBase(string sql){
string str = System.Configuration.ConfigurationManager.
ConnectionStrings["conn"].ToString();
SqlConnection connection = new SqlConnection(str);
try
{
connection.Open();
}
catch (Exception ex)
{
Response.Write(ex.Message);
} SqlCommand sqlCmd = new SqlCommand(sql, connection); SqlDataAdapter custDA = new SqlDataAdapter();
custDA.SelectCommand = sqlCmd;
DataSet ds = new DataSet();
custDA.Fill(ds, "BookType"); TreeNode root = new TreeNode("中图法分类");//新建根节点
this.Kind_Tree.Nodes.Add(root);
for (int i = ; i < ds.Tables["BookType"].Rows.Count; i++)
{
string parent=ds.Tables["BookType"].Rows[i][].ToString();//获取数据库中标记节点
if(parent=="root"){//判断是否是根节点下的子节点
TreeNode tree2 = new TreeNode(ds.Tables["BookType"].Rows[i][].ToString()
+ ds.Tables["BookType"].Rows[i][].ToString());//创建一级子节点
root.ChildNodes.Add(tree2);
/*for (int j = 0; j < ds.Tables["BookType"].Rows.Count; j++)
{
string myparent = ds.Tables["BookType"].Rows[i][2].ToString();
if (myparent == tree2.Text.ToString())
{
TreeNode tree3 = new TreeNode(ds.Tables["BookType"].Rows[i][0].ToString() + ds.Tables["BookType"].Rows[i][1].ToString());
tree2.ChildNodes.Add(tree3);
}
}*/
}
}
for (int j = ; j < root.ChildNodes.Count; j++)
{
TreeNode rootChild = root.ChildNodes[j];//获取根节点下的子节点
for (int k = ; k < ds.Tables["BookType"].Rows.Count; k++)
{
string parent = ds.Tables["BookType"].Rows[k][].ToString();//获取数据库中标记节点 if (parent == rootChild.Text.ToString().Substring(,))//判断是否是二级子节点
{
TreeNode tree3 = new TreeNode(ds.Tables["BookType"].Rows[k][].ToString()
+"-"+ ds.Tables["BookType"].Rows[k][].ToString());//新建二级子节点
rootChild.ChildNodes.Add(tree3);
}
}
} //TreeNode rootChil = root.ChildNodes[0];
// Response.Write(rootChil.Text.ToString().Substring(0,1));
connection.Close();
} //TreeView的响应事件 protected void Kind_Tree_SelectedNodeChanged(object sender, EventArgs e)
{
string s = Kind_Tree.SelectedNode.ValuePath.ToString();
char[] spitChar = new char[] { '/' };
string[] nodeValues = s.Split(spitChar);
string sql = null;
if (nodeValues.Length == )
{
string typeId = nodeValues[].Substring(, );
sql = "select 图书编号,出版社,作者,书名,图书ISBN号,分类 from bookTable d, BookType t where t.BoType_id like '"
+ typeId + "%' and t.BoType_name=d.分类";
}
else {
char[] spitChar2 = new char[] { '-' };
string[] typeId2 = nodeValues[].Split(spitChar2);
sql = "select 图书编号,出版社,作者,书名,图书ISBN号,分类 from bookTable d, BookType t where t.BoType_id ='"
+ typeId2[] + "' and t.BoType_name=d.分类";
} SqlDataSource1.SelectCommand = sql;
Response.Write(nodeValues.Length);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) { string sql = "select * from BookType";
BindDataBase(sql);
Kind_Tree.ShowLines = true;
Kind_Tree.ExpandDepth = ; }
}

显示时,因为节点的文本太长,如果要设置自动换行,还需要设置TreeView的属性

NodeWrap = true

asp .Net TreeView实现数据绑定和事件响应的更多相关文章

  1. 【转载】Asp.Net中应用程序的事件响应次序

    Asp.Net应用程序事件响应次序是指Application事件的相应次序,涉及到的事件包括Application_Start事件.BeginRequest事件.AuthenticateRequest ...

  2. 转:asp.net TreeView CheckChanged 事件浅谈

    http://blog.csdn.net/xiage/article/details/5128755 在开发中经常可以碰到类似的问题: 想通过一个树父节点的TreeNodeCheckChanged 事 ...

  3. ASP.NET -- WebForm -- 页面生命周期事件

    ASP.NET -- WebForm --  页面生命周期事件在页生命周期的每个阶段中,页将引发可运行您自己的代码进行处理的事件. 1. PreInit: 使用该事件来执行下列操作: 检查 IsPos ...

  4. .net中的TreeView的数据绑定与EasyUi_tree的数据绑定

    昨天看到了.net中的TreeView,学习了一波TreeView的数据绑定,联想到EasyUi中的Tree的数据,觉得里面的逻辑差不多,就总结了一下两者的数据绑定. 前端页面和必要的JS如下 < ...

  5. asp.net学习之 数据绑定控件--List数据绑定控件

    原文:asp.net学习之 数据绑定控件--List数据绑定控件 List控件(如 CheckBoxList.DropDownList.ListBox 和 RadioButtonList 类)继承自L ...

  6. asp.net学习之数据绑定控件、数据源控件概述

    原文:asp.net学习之数据绑定控件.数据源控件概述 1.asp.net数据绑定控件分为三大类,每个类分别进行详细:      ● 列表式数据绑定控件: 列表式数据绑定控件常用来在一个表格内的一个字 ...

  7. asp.net学习之 数据绑定控件--表格绑定控件

    原文:asp.net学习之 数据绑定控件--表格绑定控件     数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...

  8. ASP.Net 自定义HttpModule注册管道事件

    背景: 一个请求在到达处理器时 可能需要做很多重复的工作 比如使用固定的算法推算出用户id 角色   如果在应用程序各处做重复解析 会产生大量代码冗余 还有能想到的诸如记录访问者 应用日志 统计流量 ...

  9. ASP.NET机制详细的管道事件流程(转)

    ASP.NET机制详细的管道事件流程 第一:浏览器向服务器发送请求. 1)浏览器向iis服务器发送请求网址的域名,根据http协议封装成请求报文,通过dns解析请求的ip地址,接着通过socket与i ...

随机推荐

  1. Tickets——H

    H. Tickets Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this i ...

  2. java并发编程(二)线程中断

    参考:http://blog.csdn.net/ns_code/article/details/17091267 使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thre ...

  3. jQueryMobile引入文件后样式无法正常显示

    jQueryMobile引入文件后样式无法正常显示解决方法: jQuery文件必须放在jQueryMobile文件之前 eg:

  4. 2016huasacm暑假集训训练三 F - Jungle Roads

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/F 题意:在相通n个岛屿的所有桥都坏了,要重修,重修每一个桥所用的时间不同,求重修使 ...

  5. struts基于ognl的自动类型转换需要注意的地方

    好吧,坎坷的过程我就不说了,直接上结论: 在struts2中使用基于ognl的自动类型转换时,Action中的对象属性必须同时添加get/set方法. 例如: 客户端表单: <s:form ac ...

  6. 使用数据泵+dblink迁移数据库,适用于本地空间不足的情况

    col name for a40 select name,locks,pins from v$db_object_cache where locks > 0 and pins > 0 an ...

  7. ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格

    下载 PHPExcel(https://github.com/PHPOffice/PHPExcel) 把下载的 zip 包解压至 ./ThinkPHP/Library/Vendor 下 一.导入 Ex ...

  8. 利用JS生成01010101……长度可控的序列

    function ab(d){ var a = []; var x = 1 ; for (var i = 0; i < d; i++) { if (x == 0) { x = x + 1; } ...

  9. 【转】C# GET 和 SET作用

    http://www.cnblogs.com/yinxiangpei/articles/2357091.html C#中get和SET,看来看去还是看不懂,通俗一点解释一下,用了有什么好处,不用会怎么 ...

  10. iOS开发中获取WiFi相关信息

    iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...