I have a RadGrid with an Edit Form Template. Inside the template I have a RadioButtonList that has javascript attached that will hide or show elements within the form template depending on what is selected. It have it working as I expected; however, when I add a RadAjaxManager to the page, then the javascript stops working, as it no longer seems to be able to find the inner elements of the form template. Everything else on the grid seems to work with the ajax though.
The RadGrid markup is here:
The working javascript (which fails after ajax applied) is here:
And the RadAjaxManager markup is here:
The RadGrid markup is here:
<
telerik:RadGrid
ID
=
"grdWorkflow"
Skin
=
"Outlook"
AutoGenerateColumns
=
"False"
GridLines
=
"None"
Width
=
"890px"
OnNeedDataSource
=
"grdWorkflow_NeedDataSource"
OnItemDataBound
=
"grdWorkflow_ItemDataBound"
OnItemCommand
=
"grdWorkflow_ItemCommand"
OnRowDrop
=
"grdWorkflow_RowDrop"
runat
=
"server"
>
<
ClientSettings
AllowColumnsReorder
=
"false"
EnableRowHoverStyle
=
"true"
Selecting-AllowRowSelect
=
"false"
>
</
ClientSettings
>
<
MasterTableView
Caption
=
"List of workflows"
EditMode
=
"EditForms"
CommandItemDisplay
=
"Top"
Summary
=
"Add Step/Step Maintenance"
CommandItemSettings-AddNewRecordText
=
"Add New Step"
CommandItemSettings-RefreshText
=
"Refresh Workflow"
>
<
NoRecordsTemplate
>
<
div
class
=
"bold"
>
No workflows to display. Please select the link above to add a new workflow step.
</
div
>
</
NoRecordsTemplate
>
<
GroupByExpressions
>
<
telerik:GridGroupByExpression
>
<
SelectFields
>
<
telerik:GridGroupByField
FieldAlias
=
"Workflow"
FieldName
=
"WorkflowName"
/>
</
SelectFields
>
<
GroupByFields
>
<
telerik:GridGroupByField
FieldName
=
"ArtificialSortingField"
/>
</
GroupByFields
>
</
telerik:GridGroupByExpression
>
</
GroupByExpressions
>
<
Columns
>
<
telerik:GridBoundColumn
UniqueName
=
"WorkflowID"
DataField
=
"WorkflowID"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"WorkflowName"
DataField
=
"WorkflowName"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"StepID"
DataField
=
"StepID"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"StepType"
DataField
=
"StepType"
Display
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"StepTypeIcon"
HeaderText
=
"Type"
ItemStyle-Width
=
"30px"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
>
<
ItemTemplate
>
<
asp:Image
ID
=
"btnEdit"
ImageUrl="<%# GetFileTypeIcon(((NAVIDAS.Core.WorkflowStep)Container.DataItem).StepType) %>"
ImageAlign="Middle" AlternateText='<%# (((NAVIDAS.Core.WorkflowStep)Container.DataItem).StepType == "C") ? "Decision Point" : "Approval Step" %>'
ToolTip='<%# (((NAVIDAS.Core.WorkflowStep)Container.DataItem).StepType == "C") ? "Decision Point" : "Approval Step" %>'
runat="server" />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
UniqueName
=
"StepName"
HeaderText
=
"Step Name"
DataField
=
"StepName"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"Calculation"
HeaderText
=
"Show Path if:"
ItemStyle-Width
=
"105px"
>
<
ItemTemplate
>
<
asp:RadioButtonList
ID
=
"rblCalculation"
RepeatDirection
=
"Horizontal"
AutoPostBack
=
"true"
OnSelectedIndexChanged
=
"rblCalculation_SelectedIndexChanged"
Visible='<%# (((NAVIDAS.Core.WorkflowStep)Container.DataItem).StepType == "C") %>'
runat="server">
<
asp:ListItem
Text
=
"Yes"
Value
=
"1"
Selected></
asp:ListItem
>
<
asp:ListItem
Text
=
"No"
Value
=
"0"
></
asp:ListItem
>
</
asp:RadioButtonList
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridEditCommandColumn
UniqueName
=
"Edit"
HeaderText
=
"Edit"
HeaderStyle-Width
=
"30px"
ItemStyle-Width
=
"30px"
ButtonType
=
"ImageButton"
HeaderStyle-HorizontalAlign
=
"Center"
ItemStyle-HorizontalAlign
=
"Center"
>
</
telerik:GridEditCommandColumn
>
</
Columns
>
<
EditFormSettings
EditFormType
=
"Template"
>
<
FormTemplate
>
<
div
style
=
"margin-left:5px;"
>
<
asp:Label
ID
=
"lblStepID"
Text='<%# Bind("StepID") %>' Visible="false" runat="server"></
asp:Label
>
<
asp:Label
ID
=
"lblWorkflowID"
Text='<%# Bind("WorkflowID") %>' Visible="false" runat="server"></
asp:Label
>
<
asp:Label
ID
=
"lblNextStepID"
Text='<%# Bind("NextStepID") %>' Visible="false" runat="server"></
asp:Label
>
<
asp:Label
ID
=
"lblFalseStepID"
Text='<%# Bind("FalseStepID") %>' Visible="false" runat="server"></
asp:Label
>
<
fieldset
>
<
ol
>
<
li
>
<
label
for
=
"ctl00_ContentPlaceHolder1_grdWorkflow_ctl00_ctl06_txtWorkflowName"
>
Workflow Name:
</
label
>
<
asp:TextBox
ID
=
"txtWorkflowName"
Width
=
"350px"
MaxLength
=
"50"
Text='<%# Bind("WorkflowName") %>' runat="server" />
</
li
>
<
li
id
=
"liStepType"
>
<
label
for
=
"ctl00_ContentPlaceHolder1_grdWorkflow_ctl00_ctl06_rblStepType"
>
<
span
class
=
"required"
>*</
span
> Type of Step:
</
label
>
<
span
class
=
"radioButtons"
>
<
asp:RadioButtonList
ID
=
"rblStepType"
RepeatDirection
=
"Horizontal"
RepeatLayout
=
"Flow"
runat
=
"server"
>
<
asp:ListItem
Text
=
"Approval"
Value
=
"A"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"Decision Point"
Value
=
"C"
></
asp:ListItem
>
</
asp:RadioButtonList
>
<
asp:RequiredFieldValidator
CssClass
=
"requiredField"
ID
=
"rfvStepType"
ControlToValidate
=
"rblStepType"
Enabled
=
"false"
Display
=
"Dynamic"
runat
=
"server"
ErrorMessage
=
"You must select a step type"
ValidationGroup
=
"Save"
> </
asp:RequiredFieldValidator
>
</
span
>
</
li
>
<
li
>
<
label
for
=
"ctl00_ContentPlaceHolder1_grdWorkflow_ctl00_ctl06_txtStepName"
>
Step Name:
</
label
>
<
asp:TextBox
ID
=
"txtStepName"
Width
=
"350px"
MaxLength
=
"50"
Text='<%# Bind("StepName") %>' runat="server" />
</
li
>
<
li
id
=
"calcField"
>
<
label
for
=
"ctl00_ContentPlaceHolder1_grdWorkflow_ctl00_ctl06_ddlField"
>
Field:
</
label
>
<
asp:DropDownList
ID
=
"ddlField"
DataTextField
=
"FieldName"
DataValueField
=
"FieldID"
runat
=
"server"
>
</
asp:DropDownList
>
</
li
>
<
li
id
=
"calcOperator"
>
<
label
for
=
"ctl00_ContentPlaceHolder1_grdWorkflow_ctl00_ctl06_ddlOperators"
>
Comparison Type:
</
label
>
<
asp:DropDownList
ID
=
"ddlOperators"
runat
=
"server"
>
<
asp:ListItem
Text
=
"< less than"
Value
=
"<"
></
asp:ListItem
>
<
asp:ListItem
Text="> greater than" Value=">"></
asp:ListItem
>
<
asp:ListItem
Text
=
"<= less than or equal"
Value
=
"<="
></
asp:ListItem
>
<
asp:ListItem
Text=">= greater than or equal" Value=">="></
asp:ListItem
>
<
asp:ListItem
Text
=
"= equal"
Value
=
"="
></
asp:ListItem
>
<
asp:ListItem
Text="<> not equal" Value="<>"></
asp:ListItem
>
</
asp:DropDownList
>
</
li
>
<
li
id
=
"calcValue"
>
<
label
for
=
"ctl00_ContentPlaceHolder1_grdWorkflow_ctl00_ctl06_txtCalculationValue"
>
Value:
</
label
>
<
asp:TextBox
ID
=
"txtCalculationValue"
Text='<%# Bind("Value") %>' runat="server">
</
asp:TextBox
>
or
<
asp:DropDownList
ID
=
"ddlValueField"
DataTextField
=
"FieldName"
DataValueField
=
"FieldID"
runat
=
"server"
>
</
asp:DropDownList
>
</
li
>
</
ol
>
</
fieldset
>
<
div
class
=
"buttons"
>
<
asp:Button
ID
=
"btnUpdate"
Text='<%# (Container is GridEditFormInsertItem) ? "Add" : "Update" %>'
CommandName='<%# (Container is GridEditFormInsertItem) ? "PerformInsert" : "Update" %>'
runat="server" ValidationGroup="Save" />
<
asp:Button
ID
=
"btnDelete"
Text
=
"Delete"
Visible='<%# (Container is GridEditFormInsertItem) ? false : true %>'
runat="server" CausesValidation="false" CommandName="Delete" OnClientClick="javascript:return confirm('Are you sure you want to remove this step?\r\n\r\n(But not the actual approver groups associated with this step)');" />
<
asp:Button
ID
=
"btnCancel"
Text
=
"Cancel"
runat
=
"server"
CausesValidation
=
"false"
CommandName
=
"Cancel"
/>
</
div
>
</
div
>
</
FormTemplate
>
</
EditFormSettings
>
<
NestedViewSettings
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
MasterKeyField
=
"StepID"
DetailKeyField
=
"StepID"
/>
</
ParentTableRelation
>
</
NestedViewSettings
>
<
NestedViewTemplate
>
<!-- removed for simplicity. Probably not relevant -->
</
NestedViewTemplate
>
</
MasterTableView
>
<
ClientSettings
AllowRowsDragDrop
=
"true"
>
<
Selecting
AllowRowSelect
=
"true"
/>
</
ClientSettings
>
<
GroupingSettings
ShowUnGroupButton
=
"true"
/>
</
telerik:RadGrid
>
The working javascript (which fails after ajax applied) is here:
<
script
type
=
"text/javascript"
>
$(document).ready(function ()
{
$("#liStepType input:radio").each(function ()
{
var i = $(this).attr("id");
var txt = $("#" + i).val();
if (txt == "C")
{
if ($(this).is(":checked"))
{
$("#calcField").show();
$("#calcOperator").show();
$("#calcValue").show();
$("#calcFieldValue").show();
}
else
{
$("#calcField").hide();
$("#calcOperator").hide();
$("#calcValue").hide();
$("#calcFieldValue").hide();
}
}
});
$("#liStepType input:radio").click(function ()
{
var i = $(this).attr("id");
var txt = $("#" + i).val();
if (txt == "C")
{
if ($(this).is(":checked"))
{
$("#calcField").show();
$("#calcOperator").show();
$("#calcValue").show();
$("#calcFieldValue").show();
}
}
else
{
$("#calcField").hide();
$("#calcOperator").hide();
$("#calcValue").hide();
$("#calcFieldValue").hide();
}
});
});
</
script
>
And the RadAjaxManager markup is here:
<
telerik:RadAjaxManagerProxy
ID
=
"workflowProxy"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"ddlCommand"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"ddlOrganization"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdWorkflow"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"ddlOrganization"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdWorkflow"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"grdWorkFlow"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdWorkflow"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManagerProxy
>