关于coolite TreePanl删除节点后刷新的问题

微醺_zZ 2010-07-01 09:58:33
在页面放置一个隐藏文本域
<ext:Hidden runat="server" Enabled="false" ID="hidFlag">
<Listeners>
<Enable Handler="refreshTree(#{pnlTree});"/> //pnlTree就是我左边的树
</Listeners>
</ext:Hidden>
当通过Ajax方法更改数据后设置 this.hidFlag.Enabled = true;
随即调用
<script type="text/javascript">
function refreshTree(tree) {
Coolite.AjaxMethods.RefreshMenu({
success: function(result) {
var nodes = eval(result);
tree.root.ui.remove();
tree.initChildren(nodes);
tree.root.render();
}
});
}
</script> 注:必须调用JS重新渲染,不然虽然绑定了数据,但原本就是ajax的数据绑定,所以页面前端没有同时渲染而已
后台对应一个AjaxMethod
[AjaxMethod]
public string RefreshMenu()
{
Coolite.Ext.Web.TreeNodeCollection nodes = this.BuildTree(null);
return nodes.ToJson();
}

//注意:
BuildTree(null)为我迭代构建树的方法,但注意返回类型

private Coolite.Ext.Web.TreeNodeCollection BuildTree(Coolite.Ext.Web.TreeNodeCollection nodes)
{
if (nodes == null)
{
nodes = new Coolite.Ext.Web.TreeNodeCollection();
}
List<EntityUserInfo> list = new BLLUserInfo().GetAllUser();
foreach (var lis in list)
{
_parent = lis.Id;
Coolite.Ext.Web.TreeNode childNode = new Coolite.Ext.Web.TreeNode();
childNode.Text = lis.UserName;
childNode.NodeID = lis.Id.ToString();
childNode.Icon = Icon.UserGreen;
if (lis.HasSon)
{
childNode.Expanded = true;
childNode.Icon = lis.ParentId == 0?Icon.UserHome:Icon.UserRed;
childNode.Leaf = false;
BuildTree(childNode.Nodes);
}
nodes.Add(childNode);
}
return nodes;
}

页面TreePanl:

<ext:TreePanel ID="tp" runat="server" Header="false" Border="false" AutoScroll="true"
Lines="false" CollapseFirst="false" ContainerScroll="true" RootVisible="true">
<Root>
<ext:AsyncTreeNode Text="分类目录" NodeID="root" Expanded="true" />
</Root>
动态加载的子节点内容...
</ext:TreePanel>


js中红色的那句话把root的ui删了,虽然能解决刷新的问题,但页面写死的那个Root没有了...
求教有没有别的办法让页面刷新时显示 Root节点,或者刷新时不删除Root的UI
...全文
149 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
微醺_zZ 2010-07-02
  • 打赏
  • 举报
回复
来人,给分~如果你说到关键字得30分
微醺_zZ 2010-07-01
  • 打赏
  • 举报
回复
来人,给分结贴,楼上已获10分,还剩30分,至少10个人
ganlianter 2010-07-01
  • 打赏
  • 举报
回复
coolite是个extjs的封装控件肯定有对应的使用示例吧官网还真没用过
微醺_zZ 2010-07-01
  • 打赏
  • 举报
回复
是我给的分少还是没人会啊,有会的嫌分少我可以补
微醺_zZ 2010-07-01
  • 打赏
  • 举报
回复
沉的真快,没有用过Coolite控件的么,是不是该出个Coolite单独的版块啊...
微醺_zZ 2010-07-01
  • 打赏
  • 举报
回复
OK,哈哈,你找到原帖了。我就是针对这个原帖提的问题...还有来接分的么...
zhanlang9075 2010-07-01
  • 打赏
  • 举报
回复
这个问题遇到过,也先是一阵郁闷,但最终还是找到了解决方法 具体如下,仅供参考:
我的这个Demo右侧是一个表单,具体业务逻辑是,点击菜单,表单显示该节点对应的信息,操作更改后,刷新TreePanl的内容
我的做法是,在页面放置一个隐藏文本域
<ext:Hidden runat="server" Enabled="false" ID="hidFlag">
<Listeners>
<Enable Handler="refreshTree(#{pnlTree});"/> //pnlTree就是我左边的树
</Listeners>
</ext:Hidden>
当通过Ajax方法更改数据后设置 this.hidFlag.Enabled = true;
随即调用
<script type="text/javascript">
function refreshTree(tree) {
Coolite.AjaxMethods.RefreshMenu({
success: function(result) {
var nodes = eval(result);
tree.root.ui.remove();
tree.initChildren(nodes);
tree.root.render();
}
});
}
</script> 注:必须调用JS重新渲染,不然虽然绑定了数据,但原本就是ajax的数据绑定,所以页面前端没有同时渲染而已
后台对应一个AjaxMethod
[AjaxMethod]
public string RefreshMenu()
{
Coolite.Ext.Web.TreeNodeCollection nodes = this.BuildTree(null);
return nodes.ToJson();
}

//注意:
BuildTree(null)为我迭代构建树的方法,但注意返回类型

private Coolite.Ext.Web.TreeNodeCollection BuildTree(Coolite.Ext.Web.TreeNodeCollection nodes)
{
if (nodes == null)
{
nodes = new Coolite.Ext.Web.TreeNodeCollection();
}
List<EntityUserInfo> list = new BLLUserInfo().GetAllUser();
foreach (var lis in list)
{
_parent = lis.Id;
Coolite.Ext.Web.TreeNode childNode = new Coolite.Ext.Web.TreeNode();
childNode.Text = lis.UserName;
childNode.NodeID = lis.Id.ToString();
childNode.Icon = Icon.UserGreen;
if (lis.HasSon)
{
childNode.Expanded = true;
childNode.Icon = lis.ParentId == 0?Icon.UserHome:Icon.UserRed;
childNode.Leaf = false;
BuildTree(childNode.Nodes);
}
nodes.Add(childNode);
}
return nodes;
}

这样它不刷都不由它,希望你能明了,OK,打完收功!


以上所有黑体字符都属于本人从网上搜索转载而来的文字,期望能帮到LZ。

微醺_zZ 2010-07-01
  • 打赏
  • 举报
回复
悲哀,看来是帖子发错地方了...白扔了40分,大家来接分啊,散分了

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧