foreach
(GridColumn column
in
e.Item.OwnerTableView.RenderColumns)
{
if
(column
is
IGridEditableColumn)
{
IGridEditableColumn editableCol = (column
as
IGridEditableColumn);
if
(editableCol.IsEditable)
{
editor = editMan.GetColumnEditor(editableCol);
if
(editor
is
GridTextColumnEditor)
{
editorText = (editor
as
GridTextColumnEditor).Text;
editorValue = (editor
as
GridTextColumnEditor).Text;
if
(editableCol.Column.UniqueName ==
"AddressTypeStr"
)
{
newAddressType.AddressTypeStr = editorValue.ToString();
}
if
(editableCol.Column.UniqueName ==
"TypeDescription"
)
{
newAddressType.TypeDescription = editorValue.ToString();
}
}
}
}
}
// ForEach
if
(editor
is
GridBoundColumn)
{
editorText = (editor
as
GridBoundColumn).Text;
editorValue = (editor
as
GridBoundColumn).Text;
}
<
telerik:RadGrid
ID
=
"ctrlRadGridVideos"
runat
=
"server"
Height
=
"700"
AllowFilteringByColumn
=
"True"
EnableAJAX
=
"true"
AllowPaging
=
"True"
AllowSorting
=
"True"
AutoGenerateColumns
=
"False"
GridLines
=
"None"
ShowGroupPanel
=
"True"
ShowStatusBar
=
"True"
Skin
=
"Telerik"
>
<
ClientSettings
EnableRowHoverStyle
=
"true"
EnablePostBackOnRowClick
=
"true"
AllowColumnsReorder
=
"true"
AllowDragToGroup
=
"True"
>
<
Selecting
AllowRowSelect
=
"True"
/>
<
Scrolling
AllowScroll
=
"True"
UseStaticHeaders
=
"True"
/>
<
Resizing
AllowColumnResize
=
"True"
/>
</
ClientSettings
>
<
MasterTableView
CommandItemDisplay
=
"TopAndBottom"
DataKeyNames
=
"PrimaryKey"
EditItemStyle-ForeColor
=
"#669999"
>
<
RowIndicatorColumn
>
<
HeaderStyle
Width
=
"100px"
/>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
>
<
HeaderStyle
Width
=
"100px"
/>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridEditCommandColumn
HeaderStyle-Width
=
"50"
ItemStyle-ForeColor
=
"Blue"
UniqueName
=
"Edit"
>
<
HeaderStyle
Width
=
"50px"
/>
<
ItemStyle
ForeColor
=
"Blue"
/>
</
telerik:GridEditCommandColumn
>
<
telerik:GridBoundColumn
DataField
=
"VideoTitle"
HeaderText
=
"Video Title"
UniqueName
=
"VideoTitle"
EditFormColumnIndex
=
"0"
ShowSortIcon
=
"true"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"VideoSubTitle"
HeaderText
=
"Sub Title"
UniqueName
=
"VideoSubTitle"
EditFormColumnIndex
=
"0"
ShowSortIcon
=
"true"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Description"
UniqueName
=
"VideoDescription"
EditFormColumnIndex
=
"1"
Visible
=
"false"
HeaderStyle-VerticalAlign
=
"Top"
HeaderStyle-Height
=
"100%"
ShowSortIcon
=
"true"
>
<
EditItemTemplate
>
<
telerik:RadEditor
ID
=
"ctrlVideoDescriptionRadEditor"
runat
=
"server"
Content='<%# Bind("VideoDescription") %>'
Height="100%" Width="100%" Skin="Web20">
<
CssFiles
>
<
telerik:EditorCssFile
Value
=
"~/Content/css/RadEditorContentArea.css"
/>
</
CssFiles
>
</
telerik:RadEditor
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Type"
UniqueName
=
"VideoType"
EditFormColumnIndex
=
"0"
Visible
=
"false"
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"ctrlVideoTypeRadComboBox"
runat
=
"server"
Width
=
"220px"
Skin
=
"Web20"
/>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"ctrlVideoTypeLabel"
runat
=
"server"
Text
=
"Video Type"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Category"
UniqueName
=
"VideoCategory"
EditFormColumnIndex
=
"0"
Visible
=
"false"
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"ctrlVideoCategoryRadComboBox"
runat
=
"server"
Width
=
"220px"
Skin
=
"Web20"
/>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"ctrlVideoCategoryLabel"
runat
=
"server"
Text
=
"Video Category"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"VideoHyperlink"
HeaderText
=
"URL Hyperlink"
UniqueName
=
"VideoHyperlink"
EditFormColumnIndex
=
"0"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"VideoSEOKeywords"
HeaderText
=
"SEO Keywords"
UniqueName
=
"SEOKeywords"
EditFormColumnIndex
=
"0"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"VideoSEODescription"
HeaderText
=
"SEO Description"
UniqueName
=
"VideoSEODescription"
EditFormColumnIndex
=
"0"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Rating"
UniqueName
=
"Rating"
EditFormColumnIndex
=
"0"
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"ctrlVideoRatingRadTextBox"
runat
=
"server"
ValidationGroup
=
"checkRating"
Width
=
"80px"
/>
<
asp:RegularExpressionValidator
ID
=
"RegularExpressionValidatorRating"
runat
=
"server"
ControlToValidate
=
"ctrlVideoRatingRadTextBox"
ErrorMessage
=
"Please Enter Only Numbers"
ValidationExpression
=
"^\d+$"
ValidationGroup
=
"checkRating"
ForeColor
=
"Red"
>
</
asp:RegularExpressionValidator
>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"ctrlVideoRatingLabel"
runat
=
"server"
Text
=
""
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Height"
UniqueName
=
"Height"
EditFormColumnIndex
=
"0"
Visible
=
"false"
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"ctrlVideoHeightTextBox"
runat
=
"server"
ValidationGroup
=
"checkHeight"
Width
=
"80px"
/>
<
asp:RegularExpressionValidator
ID
=
"RegularExpressionValidatorHeight"
runat
=
"server"
ControlToValidate
=
"ctrlVideoHeightTextBox"
ErrorMessage
=
"Please Enter Only Numbers"
ValidationExpression
=
"^\d+$"
ValidationGroup
=
"checkHeight"
ForeColor
=
"Red"
>
</
asp:RegularExpressionValidator
>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"ctrlVideoHeightLabel"
runat
=
"server"
Text
=
"Height"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Width"
UniqueName
=
"Width"
EditFormColumnIndex
=
"0"
Visible
=
"false"
>
<
EditItemTemplate
>
<
asp:TextBox
ID
=
"ctrlVideoWidthTextBox"
runat
=
"server"
ValidationGroup
=
"checkWidth"
Width
=
"80px"
/>
<
asp:RegularExpressionValidator
ID
=
"RegularExpressionValidatorWidth"
runat
=
"server"
ControlToValidate
=
"ctrlVideoWidthTextBox"
ErrorMessage
=
"Please Enter Only Numbers"
ValidationExpression
=
"^\d+$"
ValidationGroup
=
"checkWidth"
ForeColor
=
"Red"
>
</
asp:RegularExpressionValidator
>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"ctrlVideoWidthLabel"
runat
=
"server"
Text
=
"Width"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<%-- <
telerik:GridTemplateColumn
HeaderText
=
"Hyperlink"
UniqueName
=
"VideoHyperlink"
EditFormColumnIndex
=
"0"
>
<
EditItemTemplate
>
<
telerik:RadTextBox
ID
=
"ctrlVideoHyperlinkRadTextBox"
runat
=
"server"
Width
=
"220px"
Skin
=
"Web20"
/>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"ctrlVideoHyperLinkLabel"
runat
=
"server"
Text
=
"Video Hyperlink"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
> --%>
<
telerik:GridButtonColumn
CommandName
=
"Delete"
Text
=
"Delete"
UniqueName
=
"Delete"
HeaderStyle-Width
=
"50"
ConfirmText
=
"Confirm: Delete Selected Video?"
ConfirmTitle
=
"Confirmation"
ItemStyle-ForeColor
=
"Blue"
>
<
HeaderStyle
Width
=
"50px"
/>
<
ItemStyle
ForeColor
=
"Blue"
/>
</
telerik:GridButtonColumn
>
</
Columns
>
<
EditItemStyle
ForeColor
=
"#669999"
/>
<
PagerStyle
AlwaysVisible
=
"True"
/>
<
EditFormSettings
EditFormType
=
"AutoGenerated"
FormStyle-Height
=
"500"
FormStyle-Width
=
"100%"
ColumnNumber
=
"3"
>
<%-- <
EditColumn
UniqueName
=
"EditColumn0"
>
</
EditColumn
>--%>
<
FormTableItemStyle
Wrap
=
"False"
></
FormTableItemStyle
>
<
FormCaptionStyle
CssClass
=
"EditFormHeader"
></
FormCaptionStyle
>
<
FormMainTableStyle
GridLines
=
"None"
CellSpacing
=
"0"
CellPadding
=
"3"
Width
=
"100%"
/>
<
FormTableStyle
GridLines
=
"Horizontal"
CellSpacing
=
"0"
CellPadding
=
"2"
CssClass
=
"module"
Height
=
"110px"
Width
=
"100%"
/>
<
FormTableAlternatingItemStyle
Wrap
=
"False"
></
FormTableAlternatingItemStyle
>
<
FormStyle
Height
=
"700px"
Width
=
"100%"
/>
</
EditFormSettings
>
</
MasterTableView
>
</
telerik:RadGrid
>
To give a little background, I have a RadSplitter set up with two panes - one for a RadTreeView and the other for "external content" (using URLs, but they are all internal to the site). The nodes in the tree are setup like this:
The entire TreeView object is setup as an AjaxUpdatedControl which, combined with the Javascript "node.showLoadingStatus()" method (in lieu of a LoadingPanel covering the entire tree), allows the nodes that are configured as ServerSide to appear to behave identically to the ServerSideCallback expanding nodes. This is setup as so:
<
telerik:RadAjaxManager
runat
=
"server"
ID
=
"RadAjaxManager1"
EnableAJAX
=
"true"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"trProjects"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"trProjects"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"hvNodeToSelect"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
<
ClientEvents
OnResponseEnd
=
"ajaxCallback"
/>
</
telerik:RadAjaxManager
>
When a certain action occurs on the main RadPane (where the "external" content is at - internal pages so XSS is not an issue) the loaded page calls a function called "selectNode" on the parent (which contains the RadSplitter, TreeView, etc.) which looks like this:
//called from child pages to select the associated node
function
selectNode(parent, child) {
var
parentNode = treeView.findNodeByValue(parent);
setNodeToSelect(child);
if
(!parentNode.get_expanded()) {
if
(!parentNode.get_parent().get_expanded())
parentNode.get_parent().expand();
parentNode.expand();
}
else
{
if
(parentNode.get_expandMode() != 1) {
//Server-side (encapsulated by RadAJAX)
var
childNode = treeView.findNodeByValue(child);
childNode.set_selected(
true
);
nodeToSelect =
null
;
//page-level javascript variable
}
}
}
The first thing it does is check to see if the parent node is expanded (all the way through the top-level root node) and expands down. For the purposes of this issue this is the block being called and not the other half (the "else" clause). When I execute the action that fires this the bottom-level child node (one of the database-driven X nodes as referenced above, the parent being the one with the ServerSideCallback expand mode) gets selected which is exactly what I want.
What I've noticed though is once I've utilized the "parentNode.expand();" method on a node that is ServerSide (which the RadAjaxManager makes appear as if no postback occurs) this functionality stops working. To better explain this, inside the method above there is a small function called setNodeToSelect called right at the beginning which looks like this:
function
setNodeToSelect(value) {
nodeToSelect = value;
hvNodeToSelect.value = nodeToSelect;
}
function
trProjects_NodePopulated(sender, args) {
var
node = args.get_node();
if
(nodeToSelect !=
null
) {
treeView.findNodeByValue(nodeToSelect).set_selected(
true
);
nodeToSelect =
null
;
}
}
this
.get_element().value=d
_registerSelectedNode:
function
(d){
this
._insertSortedHierarchicalIndexInArray(d._getHierarchicalIndex(),
this
._clientState.selectedNodes);
<
Windows
>
<
telerik:RadWindow
ID
=
"GLLookupWindow"
runat
=
"server"
Behaviors
=
"Close"
Width
=
"900"
Height
=
"700"
OnClientClose
=
"UnhideIframe_OnClientClose"
>
<
ContentTemplate
>
<
asp:Panel
runat
=
"server"
ID
=
"pnlGLLookup"
Visible
=
"true"
TabIndex
=
"-1"
>
<
telerik:RadGrid
AutoGenerateColumns
=
"False"
ID
=
"GLLookup"
OnItemCommand
=
"GLLookup_ItemCommand"
AllowFilteringByColumn
=
"true"
OnItemCreated
=
"GLLookup_ItemCreated"
DataSourceID
=
"SqlDataSourceGLLookupwindow"
AllowSorting
=
"true"
runat
=
"server"
PagerStyle-AlwaysVisible
=
"true"
AllowPaging
=
"true"
PageSize
=
"20"
>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
MasterTableView
DataKeyNames
=
"GCMGRP,GCACCT,GCSACT,GCDEPT,GCDESC"
>
<
PagerStyle
Mode
=
"NumericPages"
PageButtonCount
=
"5"
/>
<
Columns
>
<
telerik:GridBoundColumn
HeaderText
=
"Major"
DataField
=
"GCMGRP"
UniqueName
=
"GCMGRP"
AllowFiltering
=
"true"
SortExpression
=
"GCMGRP"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-VerticalAlign
=
"Bottom"
/>
<
telerik:GridBoundColumn
HeaderText
=
"Acct"
DataField
=
"GCACCT"
UniqueName
=
"GCACCT"
AllowFiltering
=
"true"
SortExpression
=
"GCACCT"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-VerticalAlign
=
"Bottom"
/>
<
telerik:GridBoundColumn
HeaderText
=
"Sub"
DataField
=
"GCSACT"
UniqueName
=
"GCSACT"
AllowFiltering
=
"true"
SortExpression
=
"GCSACT"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-VerticalAlign
=
"Bottom"
/>
<
telerik:GridBoundColumn
HeaderText
=
"Dept/Loc"
DataField
=
"GCDEPT"
UniqueName
=
"GCDEPT"
AllowFiltering
=
"true"
SortExpression
=
"GCDEPT"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-VerticalAlign
=
"Bottom"
/>
<
telerik:GridBoundColumn
HeaderText
=
"Description"
DataField
=
"GCDESC"
UniqueName
=
"GCDESC"
AllowFiltering
=
"true"
SortExpression
=
"GCDESC"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
HeaderStyle-VerticalAlign
=
"Bottom"
/>
</
Columns
>
<
ItemStyle
Wrap
=
"false"
/>
<
PagerStyle
Mode
=
"NumericPages"
AlwaysVisible
=
"true"
></
PagerStyle
>
</
MasterTableView
>
<
ClientSettings
EnablePostBackOnRowClick
=
"true"
>
</
ClientSettings
>
</
telerik:RadGrid
>
</
asp:Panel
>
</
ContentTemplate
>
</
telerik:RadWindow
>
</
Windows
>
<
script
type
=
"text/javascript"
>
function spellCheck() {
var spell = $find('<%= splContractSpellCheck.ClientID %>');
spell.startSpellCheck();
}
</
script
>
<
asp:Button
ID
=
"btnContractSpellCheck"
runat
=
"server"
Text
=
"Spell Check"
CssClass
=
"buttonStyle"
CausesValidation
=
"False"
UseSubmitBehavior
=
"False"
OnClientClick
=
"javascript: spellCheck()"
/>
<
telerik:RadSpell
ID
=
"splContractSpellCheck"
runat
=
"server"
ControlsToCheck
=
"txtContractSummary,txtContractPurpose,txtContractComments"
ButtonType
=
"None"
/>
<
asp:TextBox
ID
=
"txtContractSummary"
runat
=
"server"
TextMode
=
"MultiLine"
MaxLength
=
"1000"
Width
=
"100%"
Height
=
"34px"
Enabled
=
"false"
/>
<
asp:TextBox
ID
=
"txtContractPurpose"
runat
=
"server"
TextMode
=
"MultiLine"
MaxLength
=
"1000"
Width
=
"100%"
Height
=
"86px"
Enabled
=
"false"
/>
<
asp:TextBox
ID
=
"txtContractComments"
runat
=
"server"
TextMode
=
"MultiLine"
MaxLength
=
"1000"
Width
=
"100%"
Height
=
"52px"
Enabled
=
"false"
/>
function onCheckBoxClick(chk) {
debugger;
if (chkText == "Toggle ToolBar") {
var splitter = $find("<%= MainSplitter.ClientID %>");
var pane = splitter.getPaneById("TopPane");
var isCollapseSuccess = pane.collapse();
}
}
</script>
</telerik:RadCodeBlock>
HTML Code:
<telerik:RadSplitter ID="MainSplitter" runat="server" Height="100%" Width="100%"
Orientation="Horizontal">
<telerik:RadPane ID="TopPane" runat="server" Height="100" Scrolling="none" >
<!-- Place the content of the pane here -->
tree.SelectedNodes.Clear();
RadTreeNode node = tree.FindNodeByValue(idtema.ToString());
if
(node !=
null
)
{
node.Selected =
true
;
}