This is a migrated thread and some comments may be shown as answers.

[Solved] Selective Server Side call

3 Answers 129 Views
TreeView
This is a migrated thread and some comments may be shown as answers.
Hemangajit Dutta
Top achievements
Rank 1
Hemangajit Dutta asked on 26 Nov 2009, 05:41 AM
Hi,
        I am using a treeview where I need to do some server side validation when user unchecks a node. I am using the 

onnodecheck

 

event  to capture the checkbox check event in the server side. However the server side method is called and a postback happen when a user both checks or unchecks a node. Is there a way of triggering the server side call only when user unchecks the checkbox. I need to restrict the page from making postback when user checks it.

Kindly let me know a solution

Thanks and Regards
Hemangajit

3 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 26 Nov 2009, 06:16 AM
Hello Hemangajit,

Try the following approach by attaching the 'OnClientNodeChecking' event and canceling/preventing the server event based on condition.

JavaScript:
 
<script type="text/javascript"
var check = true
function OnClientNodeChecking(sender, args) { 
 
    if (!args.get_node().get_checked()&& check) { 
        args.set_cancel(true); 
        check = false
        args.get_node().set_checked(true); 
    } 
</script> 

-Shinu.
0
Hemangajit Dutta
Top achievements
Rank 1
answered on 28 Nov 2009, 09:10 PM
HI Shinu,
                 Thanks. A strange problem is happening. I modified the code as per my application need. After I check the checkbox, it is not getting checked in the client side(The tick mark is not appearing. However when I made a postback, the nodes are checked at server side. I put an alert after commiting the changes, it says true. I am a bit puzzled. The version I am using is 2009.2.701.20

 

if (!args.get_node().get_checked())

 

{

 

var treeView = $find("<%=trTaxonomy.ClientID%>");

 

treeView.trackChanges();

args.get_node().set_checked(

true);

 

args.set_cancel(

true);

 

treeView.commitChanges();

 

alert(args.get_node().get_checked());

 

 

}

Thanks
Hemangajit

0
Veselin Vasilev
Telerik team
answered on 02 Dec 2009, 09:29 AM
Hello Hemangajit Dutta,

Here is another solution:

<telerik:RadTreeView ID="RadTreeView1" runat="server" CheckBoxes="True"
    OnClientNodeChecked="onNodeChecked"
    onnodecheck="RadTreeView1_NodeCheck" Skin="Sitefinity">
    <Nodes>
        <telerik:RadTreeNode runat="server" Text="Root RadTreeNode1">
            <Nodes>
                <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 1">
                </telerik:RadTreeNode>
                <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 2">
                </telerik:RadTreeNode>
            </Nodes>
        </telerik:RadTreeNode>      
        <telerik:RadTreeNode runat="server" Text="Root RadTreeNode3">
        </telerik:RadTreeNode>
    </Nodes>
</telerik:RadTreeView>
 
<script type="text/javascript">
    function onNodeChecked(sender, e) {
        var node = e.get_node();
        if (node.get_checked()) {
            sender._postBackOnCheck = false;
        }
 
        setTimeout(function() { sender._postBackOnCheck = true; }, 100);
    }
</script>


Kind regards,
Veselin Vasilev
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
Tags
TreeView
Asked by
Hemangajit Dutta
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Hemangajit Dutta
Top achievements
Rank 1
Veselin Vasilev
Telerik team
Share this question
or