我用treeview 显示的 分级的部门 选择一个负责人, 要把选中的多个部门,分配给这个人。 怎么能取到选中的那些节点呢?
解决方案 »
- Sqlserver 初始化ORACLE驱动失败
- [求助]关于DataGridViewCell 的Value 和FormattedValue
- C# ArrayList与结构体
- 图形旋转
- datagridveiw如何固定只显示数据源的其中几列?
- 大家在帮帮我,xml怎样写入C/S中啊
- Object类能不能实现这样的功能?
- 一个很菜的问题,我装的 framework sdk 怎么没有csc.exe文件?
- 如何将string转成DateTime对相高分请教
- 强名称求救???!!!
- 在程序运用appliction.doevent()有什么好处,它是不是可以提高程序运行的速度啊,一般在什么情况下运用它啊,谢谢!!!
- WebForm的TextBox没有KeyDown事件,这怎么办?
1.下载地址
http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp
下载后是后缀为bat的版本
(1)bulid.将bulid.bat的路径指向csc.exe所在路径,生成Microsoft.Web.UI.WebControls.dll。
(2)在wwwroot下创建空目录webctrl_client\1_0。
(3)将build\Runtime下的文件拷至webctrl_client\1_0下。
(4)选择工具箱的自定义工具箱,添加Microsoft.Web.UI.WebControls.dll。
有些麻烦
但如果你能找到后缀是msi的自动安装版本,直接下一步就行(我一直用这个版本,hoho)
安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里2.运行时无法显示
一般是TreeView的版本问题,最好下载英文版自动安装版本重新安装,安装前应该先到添加删除程序里卸掉原版本3.显示格式出错(非树状显示)
TreeView要求客户端浏览器版本为IE5.5及以上,最好要求客户端升级为IE6.04.框架里使用TreeView
设置NavigateUrl、Target属性,可更新另外的Frame5.找不到TreeNode类
使用TreeView,最好添加namespace:using Microsoft.Web.UI.WebControls;6.遍历TreeView节点(递归算法)
private void Page_Load(object sender, System.EventArgs e)
{
GetAllNodeText(TreeView1.Nodes);
}
void GetAllNodeText(TreeNodeCollection tnc)
{
foreach(TreeNode node in tnc)
{
if(node.Nodes.Count!=0)
GetAllNodeText(node.Nodes);
Response.Write(node.Text + " ");
}
}7.得到node结点的父节点
TreeNode pnode;
if(node.Parent is TreeNode)
pnode=(TreeNode)node.Parent;
else
//node is root node8.修改TreeView样式(示例)
<iewc:TreeView id="TreeView1" runat="server" HoverStyle="color:blue;background:#00ffCC;" DefaultStyle="background:red;color:yellow;" SelectedStyle="color:red;background:#00ff00;">
用代码:
TreeView1.DefaultStyle["font-size"] = "20pt";9.展开时不提交,改变选择节点时才提交
将autopostback设置成false;
在body里添加 <body onload="initTree()">
然后在PageLoad里写:
string strTreeName = "TreeView1";
string strRef = Page.GetPostBackEventReference(TreeView1);
string strScript = "<script language=\"JavaScript\"> \n" + "<!-- \n" + " function initTree() { \n" +" " + strTreeName + ".onSelectedIndexChange = function() { \n" + "if (event.oldTreeNodeIndex !=
event.newTreeNodeIndex) \n" + "this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex); \n" + "window.setTimeout('" + strRef.Replace("'","file://'/") + "', 0, 'JavaScript'); \n" + " } \n" + " } \n" + "// --> \n" + "</script>";
Page.RegisterClientScriptBlock("InitTree",strScript );
这样就只有你点击的节点更改的时候才提交!10.TreeView结合XML
把XML文件设置为如下格式,然后直接设置TreeNodeSrc为该XML文件就行
<?xml version="1.0" encoding="GB2312"?>
<TREENODES>
<TREENODE TEXT="node0" EXPANDED="true">
<TREENODE TEXT="node1"/>
<TREENODE TEXT="node2"/>
</TREENODE>
<TREENODE TEXT="node3" NavigateURL="3.aspx"/>
</TREENODES>
或者用代码
TreeView1.TreeNodeSrc="a.xml";
TreeView1.DataBind();
{
TreeNode tn=this.mytree.Nodes [0];
string sSelected = getSelectedData(tn);
LblText.Text=sSelected;
} #region //【getSelectedData】遍历TreeNode下的所有节点,获取其nodedata值,以中文全角“#”分割,如果没有选择则返回"#"
public string getSelectedData(TreeNode _treeNode)
{
//第一个传入节点如果选中,增加到输出字符串中
if (allNodeData.ToString()=="#" && _treeNode.Checked)
allNodeData.Append (_treeNode.NodeData +"#"); foreach(TreeNode tempTreeNode in _treeNode.Nodes)
{
if (tempTreeNode.Checked)
{
allNodeData.Append (tempTreeNode.NodeData +"#");
getSelectedData(tempTreeNode);
}
}
return allNodeData.ToString ();
}
#endregion