关于TreeView无限分类帮顶的问题

kouti kouti 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
遇到了这么个问题,最近用TreeView绑定无限分类时,当点最后一个节点触发TreeView1_SelectedNodeChanged事件的时候无法获得TreeView1.SelectedValue的值。显示到页面的TreeView却是完全正确的。当点击其他节点后再点击最后一个节点,又可以获得TreeView1.SelectedValue的值了。用的是从网上查到的函数。很有意思,请遇到同样问题,并解决的朋友帮一下忙。

public void BindCategoryTreeVew(TreeView treeView, bool isExpanded, string sSelectedData)
{
string sqlcmd = "select * from fjdh_urlKind";

//将获取的数据转换为 一个DataTable
DataTable dt = dbase.db.GetDataset(sqlcmd).Tables[0];
treeView.Nodes.Clear();//清空树的所有节点
//获取与排序顺序中的筛选器以及指定的状态相匹配的所有System.Data.DataRow 数组

DataRow[] rowList = dt.Select("parentid=0");
foreach (DataRow row in rowList)
{
TreeNode rootNode = new TreeNode();
rootNode.Text = "<b>" + row["kName"].ToString() + "</b>";
rootNode.Value = row["ID"].ToString();
rootNode.Expanded = isExpanded;
rootNode.Selected = true;
//rootNode.NavigateUrl = "../bigclass.aspx?id=" + rootNode.Value.ToString();
treeView.Nodes.Add(rootNode);
CreateChildNode(rootNode, dt, isExpanded, sSelectedData);
}
}

private void CreateChildNode(TreeNode parentNode, DataTable dt, bool isExpanded, string sSelecedData)
{
//选择数据,添加排序表达式
DataRow[] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
foreach (DataRow row in rowList)
{
//创建一个新的节点了
TreeNode node = new TreeNode();
node.Text = row["kName"].ToString();
node.Value = row["ID"].ToString();
node.Expanded = isExpanded;
//node.SelectAction = TreeNodeSelectAction.None;

//node.NavigateUrl = "../smallclass.aspx?id=" + node.Value.ToString();

if (node.Value == sSelecedData)
{
node.Selected = true;
}
parentNode.ChildNodes.Add(node);
//递归调用,创建其他节点
CreateChildNode(node, dt, isExpanded, sSelecedData);
}
}
另外请教一下sSelectedData参数是什么意思,我在程序了将 sSelectedData的值等于了""对不对?
谢谢!!
...全文

相关推荐

TreeView实现无限分类导航

用重载实现 treeview 的无限分类递归调用

程序伊甸园

Treeview无限分类

TreeView用重载的方法实现无限分类

程序伊甸园

jquery无限分类树实现

jquery无限分类树实现,你可以和自己的数据库分类数据很好的结合,目前是最简单的实现。

raojinpg

.Net中实现无限分类的2个例子

以前总想着搞这个无限分类,今天终于得空好好的看了下,发现实现的原理还是很简单的,数据结构上,用两列(分类编号,上级编号)就可以实现,可是为了联合查询的方便,一般都再增加一列(深度),在这个实例里,我只用了两列,剩下的无非就是递归着对TreeView进行数据绑定而已~~。 代码如下:  public partial class _Default : System.Web.UI.Page     {         BIL bil = new BIL();         protected void Page_Load(object sender, EventArgs e)         {

weixin_38711008

C# 解决双击TreeView表里checkbox本身Bug问题

一个WinForm的TreeView,某node的CheckBox初始状态为false,当双击这个node的checkbox时,会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-> checked-> unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox状态为checked。在这里checkbox状态已经和显示状态不一致了 以后每次双击,checkbox显示的状态会出现一次切换,AfterCheck也会触发一次,并且checkbox显示的状态和值的状态仍然保持相反。 除上面这个问题外,还有一点,当双击treeview 的checkbox后,如果再去单击或双击该界面中除这个treeview外的任何部分,系统会忽略第一次点击事件。举例来说,一个窗口中,有一个treeview,还有一个ok按钮,当我双击这个treeview的一个checkbox后,再去点那个ok按钮,第一次点击是没有任何作用的,第二次以及以后的点击才会有效,包括点击最大化,最小化,以及关闭这种系统按钮。 为了解决以上问题,我重写了TreeView控件,在不影响其它地方的前提下,能很好的解决以上问题。我的环境:.Net framework4.0 + VS2005 + Win7 编译通过,并付执行程序。-

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