By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,921 Members | 1,442 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,921 IT Pros & Developers. It's quick & easy.

ASP.NET 2.0 Treeview No Postback?

P: n/a
Hi All,
I have a form that displays hierarchical categories in a treeview. Ok so
far so good. What I was to do is have users be able to select a node in the
treeview as part of filling out the form. I only want to allow single
selection, so using checkboxes is out of the question. It works as is, but
it makes the form very cumbersome if every time that a user selects a node,
the whole page has to reload. Is there a way to have a node become selected
without using postback? I tried setting the navigateurl of all the nodes to
"javascript:void(0);" as was suggested in one post. This works, however, if
a node is currently selected in the tree via server side code, this doesn't
de-select that node. This also doesn't work very well in non-IE browsers.
I also started to experiment using ICallbackEventHandler to use server side
functions without reposting, but that doesn't seem to work in this scenario
(I don't think). Does anyone have any way of getting around this? I really
wish the autopostback property had been built into the treeview like in
other serverside data controls.

Thanks in advance for any help,
Matt
Sep 7 '06 #1
Share this Question
Share on Google+
8 Replies


P: n/a
Simple way is just to use Atlas. E,g put the TreeView in a UpdatePanel.

--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU
http://blogs.aspadvice.com/joteke


"Matt MacDonald" <ma******@hotmail.comwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
Hi All,
I have a form that displays hierarchical categories in a treeview. Ok so
far so good. What I was to do is have users be able to select a node in
the treeview as part of filling out the form. I only want to allow single
selection, so using checkboxes is out of the question. It works as is,
but it makes the form very cumbersome if every time that a user selects a
node, the whole page has to reload. Is there a way to have a node become
selected without using postback? I tried setting the navigateurl of all
the nodes to "javascript:void(0);" as was suggested in one post. This
works, however, if a node is currently selected in the tree via server
side code, this doesn't de-select that node. This also doesn't work very
well in non-IE browsers. I also started to experiment using
ICallbackEventHandler to use server side functions without reposting, but
that doesn't seem to work in this scenario (I don't think). Does anyone
have any way of getting around this? I really wish the autopostback
property had been built into the treeview like in other serverside data
controls.

Thanks in advance for any help,
Matt

Sep 7 '06 #2

P: n/a
Can you please explain further? I'm not familiar with Atlas.

Thanks,
Matt

"Teemu Keiski" <jo****@aspalliance.comwrote in message
news:Oh**************@TK2MSFTNGP05.phx.gbl...
Simple way is just to use Atlas. E,g put the TreeView in a UpdatePanel.

--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU
http://blogs.aspadvice.com/joteke


"Matt MacDonald" <ma******@hotmail.comwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
>Hi All,
I have a form that displays hierarchical categories in a treeview. Ok
so far so good. What I was to do is have users be able to select a node
in the treeview as part of filling out the form. I only want to allow
single selection, so using checkboxes is out of the question. It works
as is, but it makes the form very cumbersome if every time that a user
selects a node, the whole page has to reload. Is there a way to have a
node become selected without using postback? I tried setting the
navigateurl of all the nodes to "javascript:void(0);" as was suggested in
one post. This works, however, if a node is currently selected in the
tree via server side code, this doesn't de-select that node. This also
doesn't work very well in non-IE browsers. I also started to experiment
using ICallbackEventHandler to use server side functions without
reposting, but that doesn't seem to work in this scenario (I don't
think). Does anyone have any way of getting around this? I really wish
the autopostback property had been built into the treeview like in other
serverside data controls.

Thanks in advance for any help,
Matt


Sep 8 '06 #3

P: n/a
It is Microsoft's implementation of AJAX: See http://atlas.asp.net

With it you can make page work without visible postbacks while still keeping
the server-side functionality.

--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU
http://blogs.aspadvice.com/joteke
"Matt MacDonald" <ma******@hotmail.comwrote in message
news:%2****************@TK2MSFTNGP03.phx.gbl...
Can you please explain further? I'm not familiar with Atlas.

Thanks,
Matt

"Teemu Keiski" <jo****@aspalliance.comwrote in message
news:Oh**************@TK2MSFTNGP05.phx.gbl...
>Simple way is just to use Atlas. E,g put the TreeView in a UpdatePanel.

--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU
http://blogs.aspadvice.com/joteke


"Matt MacDonald" <ma******@hotmail.comwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
>>Hi All,
I have a form that displays hierarchical categories in a treeview. Ok
so far so good. What I was to do is have users be able to select a node
in the treeview as part of filling out the form. I only want to allow
single selection, so using checkboxes is out of the question. It works
as is, but it makes the form very cumbersome if every time that a user
selects a node, the whole page has to reload. Is there a way to have a
node become selected without using postback? I tried setting the
navigateurl of all the nodes to "javascript:void(0);" as was suggested
in one post. This works, however, if a node is currently selected in
the tree via server side code, this doesn't de-select that node. This
also doesn't work very well in non-IE browsers. I also started to
experiment using ICallbackEventHandler to use server side functions
without reposting, but that doesn't seem to work in this scenario (I
don't think). Does anyone have any way of getting around this? I
really wish the autopostback property had been built into the treeview
like in other serverside data controls.

Thanks in advance for any help,
Matt



Sep 9 '06 #4

P: n/a
Does anybody have any more information about this?

Thanks,
Matt

"Matt MacDonald" <ma******@hotmail.comwrote in message
news:%2****************@TK2MSFTNGP03.phx.gbl...
Can you please explain further? I'm not familiar with Atlas.

Thanks,
Matt

"Teemu Keiski" <jo****@aspalliance.comwrote in message
news:Oh**************@TK2MSFTNGP05.phx.gbl...
>Simple way is just to use Atlas. E,g put the TreeView in a UpdatePanel.

--
Teemu Keiski
ASP.NET MVP, AspInsider
Finland, EU
http://blogs.aspadvice.com/joteke


"Matt MacDonald" <ma******@hotmail.comwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
>>Hi All,
I have a form that displays hierarchical categories in a treeview. Ok
so far so good. What I was to do is have users be able to select a node
in the treeview as part of filling out the form. I only want to allow
single selection, so using checkboxes is out of the question. It works
as is, but it makes the form very cumbersome if every time that a user
selects a node, the whole page has to reload. Is there a way to have a
node become selected without using postback? I tried setting the
navigateurl of all the nodes to "javascript:void(0);" as was suggested
in one post. This works, however, if a node is currently selected in
the tree via server side code, this doesn't de-select that node. This
also doesn't work very well in non-IE browsers. I also started to
experiment using ICallbackEventHandler to use server side functions
without reposting, but that doesn't seem to work in this scenario (I
don't think). Does anyone have any way of getting around this? I
really wish the autopostback property had been built into the treeview
like in other serverside data controls.

Thanks in advance for any help,
Matt



Sep 14 '06 #5

P: n/a
Hi Matt,

ATLAS is the MS flavour of AJAX, asynchronous javascript and XML. It's a
framework that integrates into VS2005. You can get it from atlas.asp.net.

As for the updatepanel, the good news is that you'll only need a few
lines around the tree to achieve partial updating of the page. Have a
look at
http://atlas.asp.net/docs/atlas/doc/...px#updatepanel
which shows how to use the updatepanel.

Hope this helps,

Regards,

Roland

Matt MacDonald schrieb:
Does anybody have any more information about this?
>>Simple way is just to use Atlas. E,g put the TreeView in a UpdatePanel.
Sep 14 '06 #6

P: n/a
re:
ATLAS is the MS flavour of AJAX
Not for long...

http://weblogs.asp.net/scottgu/archi...d-Roadmap.aspx
"As part of releasing "Atlas", we have also finally locked on an
official set of product names that we will begin using moving forward.

What was formerly called "Atlas" will now have a few names:

1) The client-side "Atlas" javascript library is going to be called the Microsoft AJAX Library.

2) The server-side "Atlas" functionality that nicely integrates
with ASP.NET will be called the ASP.NET 2.0 AJAX Extensions.

As part of this change the tag prefix for the "Atlas"
controls will change from <atlas:>to <asp:>.

3) The "Atlas" Control Toolkit today is a set of free, shared source controls and
components that help you get the most value from the ASP.NET AJAX Extensions.

Going forward, the name of the project will change
to be the ASP.NET AJAX Control Toolkit.


Juan T. Llibre, asp.net MVP
aspnetfaq.com : http://www.aspnetfaq.com/
asp.net faq : http://asp.net.do/faq/
foros de asp.net, en español : http://asp.net.do/foros/
===================================

"Roland Dick" <br*****@web.dewrote in message news:ut**************@TK2MSFTNGP05.phx.gbl...
Hi Matt,

ATLAS is the MS flavour of AJAX, asynchronous javascript and XML. It's a framework that integrates
into VS2005. You can get it from atlas.asp.net.

As for the updatepanel, the good news is that you'll only need a few lines around the tree to
achieve partial updating of the page. Have a look at
http://atlas.asp.net/docs/atlas/doc/...px#updatepanel
which shows how to use the updatepanel.

Hope this helps,

Regards,

Roland

Matt MacDonald schrieb:
>Does anybody have any more information about this?
>>>Simple way is just to use Atlas. E,g put the TreeView in a UpdatePanel.

Sep 14 '06 #7

P: n/a
I am having the same issue, and the responses to this question seem to be
missing the point entirely. I've seen this question in a few places on the
web, and their answers also seem to miss the point. I'm starting to wonder
if I'm crazy, although I can see that others are having the same problem I am.

In my case, I have a hierarchy of facilities that I need to manage. I have
a TreeView on the left side of the page showing the hierarchy, and three
buttons to the right: "Add," "Edit," and "Delete." The user first selects a
site in the TreeView, then clicks one of the three buttons to the right to
indicate what they want to do with the site. Only after that button click do
I want a PostBack to the server.

This actually works properly using the pre-.NET2.0 TreeView (i.e., the
Microsoft IE WebControls TreeView control).

With the .NET 2.0 TreeView, I can't for the life of me figure out how to
select a node (i.e., have its style change to SelectedNodeStyle, and its ID
recorded as the SelectedNode client-side) without an immediate PostBack.

It's as if the TreeView engineers never fathomed that someone would want to
do *anything* besides (a) immediately PostBack, or (b) immediately navigate
away from the page, when a user selects a node in the TreeView. I know this
can't be right. (And this is oversimplified -- by setting
<node>.SelectAction = TreeNodeSelectAction.Expand or .None, I can get
client-based behavior -- but not the behavior I want.)

Investigating this problem, I decided to take a peek inside the TreeView
JavaScript library and see what's going on there. I did a View Source and
found a couple of "<script src=" statements, and the second one turned out to
be the one emitted for TreeView pages... so I plugged that URL directly into
my Address bar and saved the .js file to my desktop.

Inside this file, among other things, appears a definition for:
"TreeView_SelectNode(data, node, nodeId)". This function is actually called
from within my .aspx page. The problem is that, while I can see the emitted
JavaScript for the call
[TreeView_SelectNode(ctl00_Content_ctl00_tvOutages_ Data,
this,'ctl00_Content_ctl00_tvOutagest5');], I have no idea how to write C#
code on the server that will emit the proper parameters for each individual
TreeNode. (In case you're wondering, I have a MasterPage, and this call
occurs from within a ContentPlaceHolder called "Content".)

The TreeView_SelectNode function does three things: (1) un-applies the
"selected" style from the currently-selected node, if any; (2) applies the
"selected" style to the newly-selected node, and (3) records the ID of the
newly-selected node in a JavaScript structure intended to track TreeView
state on the client (passed into the function as the "data" parameter).

I don't want to write an entire parallel JavaScript function for selecting
nodes when I know that there's one built into the TreeView's JavaScript
library. Does anyone know how this library works well enough to help write
the appropriate calls to do client-side node selection? Or is there a better
way to do this that I'm just missing?

Thanks,

-Bryan

"Matt MacDonald" wrote:
Hi All,
I have a form that displays hierarchical categories in a treeview. Ok so
far so good. What I was to do is have users be able to select a node in the
treeview as part of filling out the form. I only want to allow single
selection, so using checkboxes is out of the question. It works as is, but
it makes the form very cumbersome if every time that a user selects a node,
the whole page has to reload. Is there a way to have a node become selected
without using postback? I tried setting the navigateurl of all the nodes to
"javascript:void(0);" as was suggested in one post. This works, however, if
a node is currently selected in the tree via server side code, this doesn't
de-select that node. This also doesn't work very well in non-IE browsers.
I also started to experiment using ICallbackEventHandler to use server side
functions without reposting, but that doesn't seem to work in this scenario
(I don't think). Does anyone have any way of getting around this? I really
wish the autopostback property had been built into the treeview like in
other serverside data controls.

Thanks in advance for any help,
Matt
Oct 27 '06 #8

P: n/a
The only way i have found to remove hyperlink in a TreeView is to
iterate the TreeNodeCollection recusively and set the SelectAction to
TreeNodeSelectAction.None

Here's an example:

//recursive method
internal TreeView RemoveHyperLinks(TreeView treeView,
TreeNodeCollection treeNodes)
{
foreach (TreeNode node in treeNodes)
{
node.SelectAction = TreeNodeSelectAction.None;//here
the link is removed
if (node.ChildNodes != null && node.ChildNodes.Count >
0)
{
treeView = RemoveHyperLinks(treeView,
node.ChildNodes);
}
}
return treeView;
}

//initial call:
_treeView = RemoveHyperLinks(_treeView, _treeView.Nodes);
Let me know if this works for you

thx
//AndersR

Nov 30 '06 #9

This discussion thread is closed

Replies have been disabled for this discussion.