Hi,
I am using a WebDropDown with a custom table template.
I just want to add a new template item at cliet side using javascript or jQuery.
Please suggest.
My aspx page code given below :
="DropDown"
="true"
="false"
="OrderID">
>
="1"
='clsHeaderDate'>
="20%">
="0">
="25">
<%
)%>
="display: none">
="dllSelectionChange"/>
Hi wfx,
Thank you for posting in the community.
If your requirement is to add a new row in the templated table inside an item's container, this can be achieved by accessing the dropdown item's element, for istance:
ig_controls.WebDropDown1.get_items().getItem(0).get_element().children[0].insertRow(0).insertCell(0).textContent = 'This is a new cell in a new row';
More information and instructions on how to add items in WebDropDown client-side may be found at:
http://blogs.infragistics.com/forums/p/27710/253640.aspx
Please let me know if this helps.
Hi Petar,
Thanks for your quick reply.
Unfortunately the solution provided by you did not work as it is saying that method "insertRow()" is undefined.
I also tried the below piece of code which workd for me but giving an error while selecting that newly added item. Please have a look and let me know how can I fix this.
function addItem() {
var combo = $find('ddlOrder');
var item = combo.get_items().createItem();
var html_item ="<table style='width: 100%; border-collapse:collapse' cellspacing='1' cellpadding='0' border='0'><TBODY><tr class='clsRowDataLabel' height='25'><td width='20%'>999999</td><td width='20%'>Sample Style</td><td width='20%'>PAC9999</td><td width='20%'>99999</td><td width='20%'>4/5/2012 12:00:00 AM</td><td style='display: none'>999999~Sample Style~PAC9999~99999</td><td style='display: none'>99999</td></tr></TBODY></table>";
item.set_text(html_item);
item._element.innerHTML=html_item;
item.set_value(
'99999');
combo.get_items().add(item);
//combo.get_items().getItem(0).get_element().children[0].insertRow(0).insertCell(0).textContent = 'This is a new cell in a new row';
}
Thank you for your reply.
It is not necessary to inject html as the text of the new item as adding the item would instantiate the item template (an AJAX callback would be made). Attached is a sample demonstrating such a setup.
Please feel free to contact me if you have any questions.
Thankx for your reply.
The code you have sent is only helpful if we add a new item with single table cell.
I your code there are three table cells in the item template and you are only setting text for the first cell, what about rest two cells? How can we set text for other two cells ?
Please have a look to my item template with 7 cells and I wanted to add a complete row with new values :
<ItemTemplate>
</
ItemTemplate>
Please reply.
Thanks
Tasleem Arif Idrisi
WFX
<
<table style="width: 100%; border-collapse:collapse" cellspacing="1" cellpadding="0" border="0"
</tr
ItemTemplate
Note that the when adding an item in WebDropDown, the item template is not accessible and is not in fact instantiated until after the ajax callback made to the server. To modify the contents of the new item's template I suggest that you use the ItemAdded client-side event.
The templated elemets for a particular item may be accessed via the get_element() function:
function WebDropDown1_ItemAdded(sender, eventArgs){ eventArgs.get_value().get_element().children[0].rows[1].cells[0].textContent = "New text for second line of new item";}
Thanks for your reply.
As per your suggestion I am using the below code :
function addItem() { var combo = $find('WebDropDown1'); var item = combo.get_items().createItem(); item.set_text("999999"); item.set_value('999999'); combo.get_items().add(item);}
function WebDropDown1_ItemAdded(sender, eventArgs){ eventArgs.get_value().get_element().children[0].rows[1].cells[0].textContent = "My Text";}
Unfortunately eventArgs.get_value() is giving me "undefined" in ItemAdded event.
Please advice,
Tasleem Arif
I tried your code using setTimeout() but that did not work for me.
Please advise,
Thank you for the sample.
It appears that the new item's element is not initialized/created in time for you to be able to access it immediately after adding it to the dropdown. I would therefore suggest using the javascript setTimeout:
For instance:
Please find attached my aspx file and let me know why I am getting undefined on below line-
combo.get_items().getItem(0).get_element().children[0].insertRow(0).insertCell(0).textContent = 'This is a new cell in a new row';
Hi Tasleem,
I have tested my sample with your version, however the event argument's value is still accessible and not null as expected. Any additional information such as whether the dropdown is nested in some other controls may help to isolate the matter. A small sample page would be greatly appreciated.
I am using the below Infragistics assembly :
<%@ Register Assembly="Infragistics35.Web.v9.1, Version=9.1.20091.2164, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb"Namespace="Infragistics.Web.UI.ListControls" TagPrefix="ig" %>
Regards,
Tasleem Arif WFX