关于编程方式添加到TreeView中的节点无法相应Change消息的问题

AfricanWhale2003 2006-10-31 09:05:42
我在page_load中通过程序new了9个TreeNode,然后添加到页面的TreeView中,但是在onSelectNodeChange消息中得到的总是第一个节点,或第二个节点.后面的节点总是得不到SelectNodeChange消息.为什么?我用ListBox测试了一下,也是这个问题,通过程序在Page_Load中给ListBox的Items中添加9个ListItem,然后还是只有第一个和第二个item可以相应selectIndexChange消息.其他后面的根本没反映.我把autopostback已经打开了的.我在IDE中静态的添加几个item,结果静态添加的都能正常相应点击.
我会在线等,问题解决立刻结贴.谢谢各位高手一定帮忙
...全文
174 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
AfricanWhale2003 2006-10-31
  • 打赏
  • 举报
回复
我终于找到原因了,因为我在item.value中存放的是用户的数据库权限信息,而很多的用户的访问权限信息是相同的,比如系统管理员sysmanager.这样,listbox中就有多个item有相同的value.这样,势必导致listbox的精神错乱.苦呀,我苦闷了48个小时,就因为这个原因.这样.我想我在真实程序中的treeview的问题也是这个问题了.
谢谢supertbt的跟踪帮助.小小100分,请查收.
supesa 2006-10-31
  • 打赏
  • 举报
回复
listitem
supesa 2006-10-31
  • 打赏
  • 举报
回复
控件list有DataBound事件
把添加项的代码加到DataBound事件中试下
AfricanWhale2003 2006-10-31
  • 打赏
  • 举报
回复
对不起,我不太明白"移动到ListItem 控件的databind中",可以稍微详细一点吗?谢谢你的帮助
supesa 2006-10-31
  • 打赏
  • 举报
回复
foreach (UserInfo info in UserList)
{
ListItem item = new ListItem();
item.Value = info.UserGroup;
item.Text = info.UserName;
ListBox1.Items.Add(item);
}
移动到ListItem 控件的databind中
supesa 2006-10-31
  • 打赏
  • 举报
回复
看代码,没问题
supesa 2006-10-31
  • 打赏
  • 举报
回复
你把atlas去掉试试看问题还存在不
AfricanWhale2003 2006-10-31
  • 打赏
  • 举报
回复
页面代码:
<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" Height="419px" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"
Style="z-index: 104; left: 112px; position: absolute; top: 159px" Width="193px">
<asp:ListItem>11</asp:ListItem>
<asp:ListItem>22</asp:ListItem>
<asp:ListItem>33</asp:ListItem>
<asp:ListItem>44</asp:ListItem>
<asp:ListItem>55</asp:ListItem>
</asp:ListBox>
后台代码
在page_load中的listbox初始化
if (!IsPostBack)
{
//通过服务获取用户的配置信息
DBService service = new DBService();
UserInfo[] UserList;
UserList = service.GetUserInfo();

if (UserList == null)
return;

//把配置信息中的用户信息写入listBox中做成象导航栏的效果来通过选择不同的用户
//UserTreeView.Nodes.Clear();
foreach (UserInfo info in UserList)
{
ListItem item = new ListItem();
item.Value = info.UserGroup;
item.Text = info.UserName;
ListBox1.Items.Add(item);
}
}
消息处理,但是总是得到静态的和动态加的第一个和第二个,而后面就没消息
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int i = ListBox1.SelectedIndex;
}
supesa 2006-10-31
  • 打赏
  • 举报
回复
updatepanel 使用的是触发模式?
supesa 2006-10-31
  • 打赏
  • 举报
回复
你第一,第二节点和其他节点有什么区别?
你所有节点都是动态加上去的吗?
AfricanWhale2003 2006-10-31
  • 打赏
  • 举报
回复
我是使用TreeView来相当与一个导航,来控制内容atlas updatepanel中的内容更新,但是点击第一个或第二个节点可以导致回发并返回正常的selectitem,但是后面的就根本没反映.因为感觉上好像是因为selectitem总是第一个或第二个节点,所以不能引起selectnodechange消息
supesa 2006-10-31
  • 打赏
  • 举报
回复
不太明白,你说的是点其他节点不激发事件呢?
还是激发事件,selectnode总是指向第一,二节点呢?
smile9961 2006-10-31
  • 打赏
  • 举报
回复
page_load:

if not ispostback then
populate_tree()
end if
supesa 2006-10-31
  • 打赏
  • 举报
回复
谢谢``
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-31 09:05
社区公告

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

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