Hi,
I have copy and pasted the code provided by Infragistics to Load data On Demand using Odata in IgTree.
Now, I wanted to modify the template that is been dispalyed. I wanted to add images to the tree nodes based on the category type.
//*********************** Start Code **********************************************
$(document).ready(function () {
var url = 'http://services.odata.org/OData/OData.svc/Categories?$format=json&$callback=?';
//creates new JSONP data source for OData
var jsonp = new $.ig.JSONPDataSource({ dataSource: url, responseDataKey: "d" });
//Load on demand happens automatically using OData, the loadOnDemand option,
//and properly configured bindings
$("#tree1").igTree({
dataSource: jsonp,
dataSourceType: 'jsonp',
responseDataKey: 'd',
loadOnDemand: true,
bindings: {
textKey: 'Name',
valueKey: 'ID',
primaryKey: 'ID',
nodeContentTemplate:
"{{if $data.__metadata.type== 'ODataDemo.Category'}}<div class='category'><img src='../../Content/images/folder.png' style='height:20px;width:20px;border:none;' /><label>${Name}</label></div>" +
"{{/if}}",
childDataProperty: 'Products',
childDataProperty: 'Supplier',
valueKey: 'ID'
}
});
//***************************************End Code ************************
After using the custom template, whenever I hover over the Parent Node an extra image/style is getting displayed . The css styles responsible for this are ui-state-hover, ui-state-focus ...
I am not able to suppress/override these classes. Could you let me know where am I going wrong ? Any help is greatly appreciated.
I have checked that I have jquery.tmpl.min.js, ig.ui.min.js in correct order.
Thanks,
Anirban
Basically, my requirement is : Whenever the mouse enters into any of the child nodes, a popup should open up displaying some message. Also, if the supplier name is "Tokyo Traders", on mouse hover an image just beside the node needs to be displayed.
I am uploading the only the files which are required for this requirement.
Thanks Nadia for your help.
I have 2 questions in this regard :
1) I am using the Infragistics servicce as of now. The actual service will return JSON and not ODATA. In that case will LoadOnDemand work ?
2) The mouseover does not open up a popup. Could you please take a look on the dummy files that I have attached in my previous post. Cant upload the entire solution because the file size exceeds 200KB .
Here s what I have done to show the bubble up pop up. Doesn't work though:
@{
ViewBag.Title = "TreeView";
<h2>TreeView</h2>
<script type="text/javascript">
var offsetX = 20,
offsetY = 20;
$(".desc_hover").live('mouseenter', function (evt) {
var par = $(this).parent();
// if text is Tokyo Traders add image after node
//if ($(this).text() == "Tokyo Traders")
// if there is alredy added image do not add image again
if (par.find(">img").length < 2) {
var html = "<img class='favsport' src='../../Content/images/Football.png' title='Folder' style='border:none;width=20px;height=20px' id='imgdiv'></img>";
par.append(html);
var o = {
left: evt.pageX,
top: evt.pageY
};
$("#test").show(2000).offset({left: 400, top: 400 });
$(".desc_hover").live('mouseleave', function (evt, ui) {
par.find($('#imgdiv')).remove();
//and properly configured bindings ><img class='favsport' src='../../Content/images/folder.png' alt='football' style='display: none;'></img>
nodeContentTemplate: "<img class='favsport' src='../../Content/images/folder.png' title='Folder' style='border:none;width=20px;height=20px'></img><label>${Name}</label>",
nodeContentTemplate: "<img class='favsport' src='../../Content/images/folder.png' alt='football' style='border:none;width=20px;height=20px'></img><label>${Name}</label>",
nodeContentTemplate: "<span data-tag><img class='favsport' src='../../Content/images/file.png'alt='football' style='border:none;width=20px;height=20px'></img><label class='desc_hover'>${Name}</label></span>"
</script>
<div class="content clearfix">
<!-- side nav begins here -->
<div id = "test1" class="side-nav">
<div id="tree1">
<p>Anirban</p>
</div>
<!-- side nav ends here -->
<section class="main-box">
<hgroup>
<h1>
Infragistics TreeView Control</h1>
<h2>
Load on demand </h2>
<p>
The other grid will go here</p>
</hgroup>
<div class="sampleContainer">
<!--igTree target element-->
<div id="sampleContent">
</section>
<span id="test" style="display:none;">This is a test</span>
Hi there,
The data does not need to be of oData type in order to use load on demand with the igTree. Please refer to the following sample for load on demand: http://samples.infragistics.com/jquery/tree/load-on-demand
Also I would suggest using absolutely or relatively positioned span. I believe right now your span is showing, but it's offset is 400/400 pixels below and to the left of your last element on the page. Try setting the position to absolute at 0/0 and see whether it is going to show up.
Thank you for using the Infragistics forums!
Thanks for your response. I am getting there. But my requirement is :
Hi again,
I have attached a modified sample to show you how to achieve this. Currently clicking on the image just alerts, but you can change the logic such that it opens a custom pop-up container. Let me know if this helps!
Hello Anirban,
Thank you for posting in our forums and using jQuery components.
I read carefully and noticed that Nadia and Konstantin have answered all your question regarding the usage of igTree.
If you have licenced key I recommend you registering your product
http://devcenter.infragistics.com/Protected/ProductRegistration.aspx
After that you can create a support ticket regarding the issues that you experience with IG components.
http://forums.infragistics.com/blogs/developer_support/archive/2012/01/16/how-to-more-effectively-get-answers-to-your-questions.aspx
About implementation of custom scenarios which is not related with the IG controls
http://ko.infragistics.com/support/policies.aspx#SupportPolicies
you should contact our Consulting Team
http://ko.infragistics.com/DhtmlPanelFrame.aspx?id=768#Overview
Please let us know if you have further questions regarding the functionality of igTree
Any updates on this ? We are using a licensed version- so any ways to expedite this ?
I can provide you the license key if required.
Okay, thanks for the update. The issue in context is not resolved yet. Will be great if someone from the dev team an help me out.
Hi again.
I just wanted to let you know that a developer support case has been created for you and the developer support will assist you further. Please excuse me for the delayed reply!
Yes I know that, but I believe there is some issue on the code that I am writing.
Firstly, I need to call the mouseleave on the live() of the child node and show the tooltip. Then as soon as the mouse points over the image I need to hide the tooltip and show the menus on the image. Now on the menu hover, they should be on the DOM and now get hidden, since I have a mouseout event that is clearing the custom template. I tried very similar to this: http://jsfiddle.net/8Mqk7/5/ but not getting the exact solution.
It will be good if you could provide me with the exact solution.