<
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
//RadTreeNOde in Combobox
function nodeClicking(sender, args) {
var comboBox = $find("<%= DepartmentCombo.ClientID %>");
var node = args.get_node()
comboBox.set_text(node.get_text());
comboBox.trackChanges();
comboBox.get_items().getItem(0).set_text(node.get_text());
comboBox.get_items().getItem(0).set_value(node.get_value());
comboBox.commitChanges();
comboBox.hideDropDown();
// Call comboBox.attachDropDown if:
// 1) The RadComboBox is inside an AJAX panel.
// 2) The RadTreeView has a server-side event handler for the NodeClick event, i.e. it initiates a postback when clicking on a Node.
// Otherwise the AJAX postback becomes a normal postback regardless of the outer AJAX panel.
//comboBox.attachDropDown();
}
function StopPropagation(e) {
if (!e) {
e = window.event;
}
e.cancelBubble = true;
}
function OnClientDropDownOpenedHandler(sender, eventArgs) {
var tree = sender.get_items().getItem(0).findControl("RadTreeView1");
var selectedNode = tree.get_selectedNode();
if (selectedNode) {
selectedNode.scrollIntoView();
}
}
</
script
>
</
telerik:RadCodeBlock
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"DepartmentCombo"
Width
=
"100%"
OnClientDropDownOpened
=
"OnClientDropDownOpenedHandler"
EmptyMessage
=
"Хэлтэс албаны сонгоно уу"
ExpandAnimation-Type
=
"None"
CollapseAnimation-Type
=
"None"
AutoPostBack
=
"true"
OnInit
=
"DepComboBox_OnInit"
>
<
Items
>
<
telerik:RadComboBoxItem
Value
=
"0"
Text
=
"Хэлтэс албаа сонгоно уу"
/>
</
Items
>
<
ItemTemplate
>
<
div
id
=
"div1"
>
<
telerik:RadTreeView
runat
=
"server"
ID
=
"RadTreeView1"
OnClientNodeClicking
=
"nodeClicking"
Width
=
"100%"
Height
=
"240px"
>
</
telerik:RadTreeView
>
</
div
>
</
ItemTemplate
>
</
telerik:RadComboBox
>
<
script
type
=
"text/javascript"
>
var divitem = document.getElementById("div1");
if (null != divitem)
divitem.onclick = StopPropagation;
</
script
>
when i postback and get RadTreeview1.selectedvalue all working perfectly
RadTreeView RadTree = (RadTreeView)DepartmentCombo.Items[0].FindControl(
"RadTreeView1"
);
Response.Write(RadTree.SelectedValue);
but when i get RadTreeview1.selectedvalue in
PositionCombo
i get msg "Input string was not in a correct format"<
telerik:RadComboBox
runat
=
"server"
ID
=
"PositionCombo"
Width
=
"100%"
EmptyMessage
=
"Албан тушаалаа сонгоно уу"
EnableLoadOnDemand
=
"True"
ShowMoreResultsBox
=
"true"
Height
=
"150px"
EnableVirtualScrolling
=
"true"
OnItemsRequested
=
"PositionCombo_ItemsRequested"
LoadingMessage
=
"Ачааллаж байна..."
>
<
HeaderTemplate
>
<
table
style
=
"width: 100%"
cellspacing
=
"0"
cellpadding
=
"0"
>
<
tr
style
=
"color: #417CAB; font-weight: bold;"
>
<
td
style
=
"width: 100%;"
>
Нэр
</
td
>
</
tr
>
</
table
>
</
HeaderTemplate
>
<
ItemTemplate
>
<
table
style
=
"width: 100%"
cellspacing
=
"0"
cellpadding
=
"0"
>
<
tr
>
<
td
style
=
"width: 100%;"
>
<%# DataBinder.Eval(Container, "Text")%>
</
td
>
</
tr
>
</
table
>
</
ItemTemplate
>
</
telerik:RadComboBox
>
protected
void
PositionCombo_ItemsRequested(
object
sender, RadComboBoxItemsRequestedEventArgs e)
{
RadTreeView RadTree = (RadTreeView)DepartmentCombo.Items[0].FindControl(
"RadTreeView1"
);
int
ComboID = Convert.ToInt32(DepartmentCombo.SelectedValue); //0
int
TReeID = Convert.ToInt32(RadTree.SelectedValue);//Input string was not in a correct format
DataTable data = _DepClass.GetPositionListForCbx(TReeID);
int
itemOffset = e.NumberOfItems;
int
endOffset = Math.Min(itemOffset + 500, data.Rows.Count);
e.EndOfItems = endOffset == data.Rows.Count;
for
(
int
i = itemOffset; i < endOffset; i++)
{
RadComboBoxItem tempIT =
new
RadComboBoxItem();
tempIT.Value = data.Rows[i][
"id"
].ToString();
tempIT.Text = data.Rows[i][
"title"
].ToString();
PositionCombo.Items.Add(tempIT);
tempIT.DataBind();
}
e.Message = GetStatusMessage(endOffset, data.Rows.Count);
}
PS: Sorry my English is bad :).