Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP.NET 2.0 Treeview No Postback?

Reply
Thread Tools

ASP.NET 2.0 Treeview No Postback?

 
 
Matt MacDonald
Guest
Posts: n/a
 
      09-07-2006
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


 
Reply With Quote
 
 
 
 
Teemu Keiski
Guest
Posts: n/a
 
      09-07-2006
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" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> 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
>



 
Reply With Quote
 
 
 
 
Matt MacDonald
Guest
Posts: n/a
 
      09-08-2006
Can you please explain further? I'm not familiar with Atlas.

Thanks,
Matt

"Teemu Keiski" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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" <(E-Mail Removed)> wrote in message
> news:%(E-Mail Removed)...
>> 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
>>

>
>



 
Reply With Quote
 
Teemu Keiski
Guest
Posts: n/a
 
      09-09-2006
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" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Can you please explain further? I'm not familiar with Atlas.
>
> Thanks,
> Matt
>
> "Teemu Keiski" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> 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" <(E-Mail Removed)> wrote in message
>> news:%(E-Mail Removed)...
>>> 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
>>>

>>
>>

>
>



 
Reply With Quote
 
Matt MacDonald
Guest
Posts: n/a
 
      09-14-2006
Does anybody have any more information about this?

Thanks,
Matt

"Matt MacDonald" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Can you please explain further? I'm not familiar with Atlas.
>
> Thanks,
> Matt
>
> "Teemu Keiski" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> 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" <(E-Mail Removed)> wrote in message
>> news:%(E-Mail Removed)...
>>> 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
>>>

>>
>>

>
>



 
Reply With Quote
 
Roland Dick
Guest
Posts: n/a
 
      09-14-2006
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.

 
Reply With Quote
 
Juan T. Llibre
Guest
Posts: n/a
 
      09-14-2006
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" <(E-Mail Removed)> wrote in message news:(E-Mail Removed)...
> 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.



 
Reply With Quote
 
=?Utf-8?B?QnJ5YW4gT3dlbg==?=
Guest
Posts: n/a
 
      10-27-2006
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
>
>
>

 
Reply With Quote
 
anders.rask@gmail.com
Guest
Posts: n/a
 
      11-30-2006
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

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
how to access the Page from a TreeNode (treeview 's element) : addinga context menu to a treeview abargaddon ASP .Net Building Controls 0 01-17-2008 11:05 AM
Microsoft Treeview vs System Treeview stepkurt ASP .Net Web Controls 1 09-02-2007 11:32 AM
ASP.NET 2.0 TreeView - Programatically Selecting A TreeView Node =?Utf-8?B?VHltYm93?= ASP .Net 2 01-10-2006 03:51 AM
Issue with a custom TreeView derived from the TreeView control Ionutz ASP .Net Web Controls 2 10-23-2005 03:23 PM
TreeView not rendering nodes? Cacheing of a TreeView Per Salmi ASP .Net Web Controls 1 10-15-2003 01:15 PM



Advertisments