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.
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!
Hi Konstantin,
Thanks for your reply. Now I am able to show the image, but the issue that I am facing is :
On Hovering over the last child node [e.g. 'Tokyo Traders'], I need to show a customized tooltip [not using the html title property since we will be have to format the text that we have to show]. Also, when the user hovers the last child node, a image should appear beside it. Now when the user clicks on the image again a customized menu should open up from there. I am able to show the customized menu option when you click the image, but as soon as I try to click on those menu options, it is getting disappeared from the DOM since all these html elements are rendered on the mouseenter event of the child node.
I hope I am able to explain you my scenario.
Many thanks for taking the pain and replying to my queries. Just that I am stuck with this and not able to resolve it yet.
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://es.infragistics.com/support/policies.aspx#SupportPolicies
you should contact our Consulting Team
http://es.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.