关于TreeView无限分类帮顶的问题
kouti 2008-07-03 03:27:11 遇到了这么个问题,最近用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的值等于了""对不对?
谢谢!!