我页面左边一个TreeView控件,有三点,点一下就在右边绑定DataGrid.
DataGrid上有修改按钮,在修改页面修改完后又返回这个有TreeView的页面,并让TreeView展开到同样位置,DataGrid也重新绑定
说简单点,就是返回再刷新 (我用返回不会刷新,而且修改后有弹出窗口,返回不了了)TreeView能不能像DropDownList一样,设置SelectedValue="xx"啊,这样就可以让他展开到特定位置了还有个TreeView的问题
树左边有展开的有+号,没展开的是-后,右边是名字,我想点+号直接展开树,而不绑定DataGrid,要怎么设.
DataGrid上有修改按钮,在修改页面修改完后又返回这个有TreeView的页面,并让TreeView展开到同样位置,DataGrid也重新绑定
说简单点,就是返回再刷新 (我用返回不会刷新,而且修改后有弹出窗口,返回不了了)TreeView能不能像DropDownList一样,设置SelectedValue="xx"啊,这样就可以让他展开到特定位置了还有个TreeView的问题
树左边有展开的有+号,没展开的是-后,右边是名字,我想点+号直接展开树,而不绑定DataGrid,要怎么设.
你说弹出新窗体,那就是你js代码写错了,与空间无关
后台事件为
private void TreeView1_NodeSelected(object sender, NickLee.Web.UI.TreeViewNodeEventArgs e)
{
}
2.可以通过ID获取,TreeView tree1=new TreeView();
TreeView1.FindNodeById(这里你的ID),可以直接找到对应节点
生成后为一个NickLee.Web.UI.TreeViewNode
3,直接点+就可以了,文字点击不刷新是
ExpandNodeOnSelect="False"
文档一直在写,估计可以出几本书了。请各位等待
1.你可能没听明白我说的.
TreeView绑定DataGrid这些我都弄好了.
在修改页面修改后会弹出Java小窗口,点后退退来回去.
2."展开到特定位置"你能说得详细些吗?
比如我pageLoad里,传进一个参数ID=34,然后树就展开到ID=34的这个位置,并绑定此位置的DataGrid.(每个位置绑定不同的表)
3. 我TreeView点+号和点后面名字都一样的效果,会绑定DataGrid,我是想点+号不绑定(刷新无所谓),只有点+号后面的名称才绑定DataGrid.to ld_thinking(懒得想) 1.1可以用,这个控件非常不错,属性太多,没找到中文文档,看得我头很晕
using System.IO;
using System.Resources;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;public class TreeViewCtl : System.Windows.Forms.Form
{ public TreeViewCtl()
{
InitializeComponent(); FilltvwDirectory();
cbxImageList.SelectedIndex = 1;
indentUpDown.Value = tvwDirectory.Indent;
} /// <summary>
/// 清理正在使用的所有资源
/// </summary>
public new void Dispose()
{
base.Dispose();
components.Dispose();
} private void AddDirectories(TreeNode node)
{
try
{
DirectoryInfo dir = new DirectoryInfo(GetPathFromNode(node));
DirectoryInfo[] e = dir.GetDirectories(); for (int i = 0; i < e.Length; i++)
{
string name = e[i].Name;
if (!name.Equals(".") && !name.Equals(".."))
{
node.Nodes.Add(new TreeNode(name));
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private void AddSubDirectories(TreeNode node) //TreeNode
{
for (int i = 0; i < node.Nodes.Count; i++)
{
AddDirectories(node.Nodes[i]);
} }
private void tvwDirectory_AfterSelect(object source, TreeViewEventArgs e)
{
Text = " 文件资源管理器 - " + e.Node.Text;
this.txtIndex.Text=e.Node.Index.ToString(); this.txtText.Text=e.Node.Text.ToString();
}
private void tvwDirectory_BeforeExpand(object source, TreeViewCancelEventArgs e)
{
TreeNode nodeExpanding = (TreeNode)e.Node; AddSubDirectories(nodeExpanding);
} private void FilltvwDirectory()
{
string[] drives = Environment.GetLogicalDrives();
for (int i = 0; i < drives.Length; i++)
{
TreeNode cRoot = new TreeNode(drives[i]);
tvwDirectory.Nodes.Add(cRoot);
AddDirectories(cRoot); }
}
private string GetPathFromNode(TreeNode node)
{
if (node.Parent == null)
{
return node.Text;
}
return Path.Combine(GetPathFromNode(node.Parent), node.Text);
}
private int Refresh_GetExpanded(TreeNode Node, string[] ExpandedNodes, int StartIndex)
{ if (StartIndex < ExpandedNodes.Length)
{
if (Node.IsExpanded)
{
ExpandedNodes[StartIndex] = Node.Text;
StartIndex++;
for (int i = 0; i < Node.Nodes.Count; i++)
{
StartIndex = Refresh_GetExpanded(Node.Nodes[i],
ExpandedNodes,
StartIndex);
}
}
return StartIndex;
}
return -1;
}
private void Refresh_Expand(TreeNode Node, string[] ExpandedNodes)
{ for (int i = ExpandedNodes.Length - 1; i >= 0; i--)
{
if (ExpandedNodes[i] == Node.Text)
{ AddSubDirectories((TreeNode) Node);
Node.Expand(); for (int j = 0; j < Node.Nodes.Count; j++)
{
Refresh_Expand(Node.Nodes[j], ExpandedNodes);
} return;
}
}
}
private void Refresh(TreeNode node)
{ if (node.Nodes.Count > 0)
{
if (node.IsExpanded)
{ string[] tooBigExpandedNodes = new string[node.GetNodeCount(true)];
int iExpandedNodes = Refresh_GetExpanded(node,
tooBigExpandedNodes,
0);
string[] expandedNodes = new string[iExpandedNodes];
Array.Copy(tooBigExpandedNodes, 0, expandedNodes, 0,
iExpandedNodes); node.Nodes.Clear();
AddDirectories(node); AddSubDirectories((TreeNode)node);
node.Expand();
for (int j = 0; j < node.Nodes.Count ; j++)
{
if (node.Nodes[j].Nodes.Count > 0)
{
Refresh_Expand(node.Nodes[j], expandedNodes);
}
}
}
else
{
node.Nodes.Clear();
AddDirectories(node);
}
}
else
{
node.Nodes.Clear();
AddDirectories(node);
}
} private void chkOrder_Click(object source, EventArgs e)
{
this.tvwDirectory.Sorted = chkOrder.Checked;
for (int i = 0; i < tvwDirectory.Nodes.Count; i++)
{
Refresh(tvwDirectory.Nodes[i]);
}
} private void cbxImageList_SelectedIndexChanged(object source, EventArgs e)
{
int index = cbxImageList.SelectedIndex;
if (index == 0)
{
tvwDirectory.ImageList = null;
}
else if (index == 1)
{
tvwDirectory.ImageList = imageList1;
}
else
{
tvwDirectory.ImageList = imgList2;
}
}
给你一串代码(完整),像资源管理器一样用TreeView显示文件与文件夹。
在修改页面修改后会弹出Java小窗口,点后退退来回去.
这个是你自己的js 错误,控件如果有问题,请下载1.9.4.6中的版本号为
2006.1.1231版
2.
TreeView1.FindNodeById("34").Selectable=true;
TreeView1.FindNodeById("34").Expanded=true;3.用nodeselect事件,在事件中绑定DataGrid,不过我奇怪的是
NickLee.Web.UI中有专门的父子级控件
NickLee.Web.UI.HierarGrid,你怎么不用中文文档估计没有那么快,因为要做通用版本,中文版本还没有
如果你要资源管理器的例子,可以参考NickLee.Framework.1.9.4.6.rar
中的高级效果中的资源管理器例子。
我不知道还有NickLee.Web.UI.HierarGrid,呵呵,第一次用,看别人的例子.
我的TreeView在节点绑定表的ID号,然后再右边的DataGrid显示,
NickLee.Web.UI.HierarGrid 这个可能显示一个表的内容吗?怎么用法?
我上班时间不能用QQ啊 :((( 会被K
只能用MSN
1.autoPostBack不能设为true.
2.绑定节点时,设置节点的navigateurl="想要转到的页面?参数";
3.设置节点的target属性=“这个筐架中用来显示数据的筐架的默认页面”
比如:
<frameset cols="185,*">
<frame src="Left.aspx" frameborder="0" noresize scrolling="no" name="left">
<frame src="main.aspx" frameborder="0" noresize scrolling="no" name="main">
</frameset>
你的树放在left,而你要在点击节点时在main中加载list.aspx,
那这个时候,每个节点的navigateurl=“list.aspx”
每个节点的target=“main.aspx”
OK了,绝对没有问题,完全解决你全部的问题呵呵,不要谢我了
实在很抱歉,你所说的对我没用,完全不能解决我的全部问题!现在我只想解决一个问题,就是怎么由ID号展开到指定位置
mail_ricklee(NickLee) 说:
TreeView1.FindNodeById("34").Selectable=true;
TreeView1.FindNodeById("34").Expanded=true;
可以我试几遍都展不开呀.
我的TreeView是绑定到数据库的,在PageLoad绑定,ID就是数据库的自动编号
但像Response.Write(TreeView1.FindNodeById("34").Text)都能正确输出.
mail_ricklee(NickLee) 大大通过远程协助帮我调试好的
真是非常感谢这个大大
现在这么牛的又这么热心的人实在是太太太少了.